查找目录下同名但不同后缀名文件的shell脚本代码

 更新时间:2013年02月26日 23:00:27   作者:  
这个脚本可以实现指定目录下同名但不同后缀名的查找,可以拓展为删除指定的文件的脚本,觉得很实用,分享一下

因为后台录入的同事,上传文件的时候,给文件取了相同的名字,但不同的后缀名,由于文件路径非常深,大概十层左右,每一层又有几十个文件,所以人工找起来非常麻烦,所以写了个脚本,帮他们实现查找指定目录下所有子目录及文件,找出相同文件名,不同后缀的文件,然后,手动保留其中一个。

复制代码 代码如下:

#!/bin/bash 
#判断一下脚本参数的问题 
if [ $# -ne 1 ];then 
   echo "Usage find_same.sh direcroty" 
   exit 
fi 
find $1 -type d > /tmp/dir.txt 
#将所有需要查询的目录本身和子目录的名字存储在一个临时文件里 
#对每个目录进行比较查询 
while read dir 
do 
     find $dir -maxdepth 1 -type f > /tmp/file.txt 
     #将当前目录下的所有文件存储在临时文件里 
     awk -F '/' '{print $NF}' /tmp/file.txt | awk -F '[.]' '{print $1}'| sort | uniq -d > /tmp/filename.txt 
     #把文件名字取出来,有同样名字的就把名字放到/tmp/filename.txt里 
     line=`wc -l /tmp/filename.txt | awk '{print $1}'` 
     #判断一下该文件里一共有多少行,每一行就是一个重名的文件名 
     #输出 
     echo "The directory $dir including same name file: " 
     if [ $line -ge 1 ] ; then 
        while read name 
        do 
        filename=`grep $name /tmp/file.txt` 
                echo "$filename" 
                echo $filename >> /tmp/samefile.txt 
                #所有的记录存放在这个文件里 
        done < /tmp/filename.txt 
      fi 
done < /tmp/dir.txt

模拟测试:

linux-8hij:/tmp/test # ll
total 4
-rw-r--r-- 1 root root    0 Mar  9 02:04 1.png
-rw-r--r-- 1 root root    0 Mar  9 02:04 1.txt
drwxr-xr-x 2 root root 4096 Mar  9 02:05 test1
linux-8hij:/tmp/test/test1 # ll
total 0
-rw-r--r-- 1 root root 0 Mar  9 02:05 11.jpg
-rw-r--r-- 1 root root 0 Mar  9 02:05 11.log
-rw-r--r-- 1 root root 0 Mar  9 02:05 2.log

运行结果:

linux-8hij:/tmp # ./find_name.sh /tmp
The directory /tmp including same name file:
The directory /tmp/.ICE-unix including same name file:
The directory /tmp/.X11-unix including same name file:
The directory /tmp/gconfd-root including same name file:
The directory /tmp/gconfd-root/lock including same name file:
The directory /tmp/gpg-PIEU09 including same name file:
The directory /tmp/test including same name file:
/tmp/test/1.txt
/tmp/test/1.png
The directory /tmp/test/test1 including same name file:
/tmp/test/test1/11.jpg
/tmp/test/test1/11.log

查看记录:

linux-8hij:/tmp # cat /tmp/samefile.txt
/tmp/test/1.txt /tmp/test/1.png
/tmp/test/test1/11.jpg /tmp/test/test1/11.log

通过这个脚本可以实现指定目录下同名但不同后缀名的查找,可以拓展为删除指定的文件的脚本,觉得很实用,分享一下

相关文章

  • linux 中ls命令详解

    linux 中ls命令详解

    ls命令是linux下最常用的命令。ls命令就是list的缩写。下面通过本文给大家分享linux 中ls命令详解,感兴趣的朋友一起看看吧
    2017-09-09
  • expect实现单台、多台服务器批量scp传输文件

    expect实现单台、多台服务器批量scp传输文件

    这篇文章主要介绍了expect实现单台、多台服务器批量scp传输文件,本文提供了单台传输脚本、多台传输脚本及服务器信息配置文件,需要的朋友可以参考下
    2014-12-12
  • Linux启动过程详细介绍

    Linux启动过程详细介绍

    这篇文章主要介绍了Linux启动过程详细介绍的相关资料,需要的朋友可以参考下
    2017-06-06
  • Shell四种运行方式(启动方式)的实现

    Shell四种运行方式(启动方式)的实现

    这篇文章主要介绍了Shell四种运行方式(启动方式)的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 解决bash:/root/.bashrc:Permission denied的问题

    解决bash:/root/.bashrc:Permission denied的问题

    本文主要介绍了解决bash:/root/.bashrc:Permission denied的问题,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • shell实现tr删除替换详解

    shell实现tr删除替换详解

    这篇文章主要介绍了shell实现tr删除替换详解,需要的朋友可以参考下
    2014-12-12
  • linux 获取某个日期对应的月末日期方法

    linux 获取某个日期对应的月末日期方法

    今天小编就为大家分享一篇linux 获取某个日期对应的月末日期方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • linux下socket编程常用头文件(推荐)

    linux下socket编程常用头文件(推荐)

    这篇文章主要介绍了linux下socket编程常用头文件,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-10-10
  • 浅谈Vim中的Tab与空格缩进

    浅谈Vim中的Tab与空格缩进

    下面小编就为大家带来一篇浅谈Vim中的Tab与空格缩进。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • 浅谈CI脚本异常退出问题定位

    浅谈CI脚本异常退出问题定位

    下面小编就为大家带来一篇浅谈CI脚本异常退出问题定位。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11

最新评论