当前位置:  操作系统/服务器>linux

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

    来源: 互联网  发布时间:2014-10-14

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

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

代码如下:

#!/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

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


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 求一小脚本,查找进程号然后kill掉
  • shell脚本:查找有执行权限的文件格式为普通的文本文档
  • 请教一个查找字符的脚本。急用!!
  • 在一类文件中查找特定字符脚本
  • shell 脚本查找文件并输出
  • Linux下查找后门程序 CentOS 查后门程序的shell脚本
  • 简单的Linux查找后门思路和shell脚本分享
  • python脚本实现查找webshell的方法
  • 求一批量查找替换脚本
  • shell 脚本完成在目录或者文件中查找输入的内容,并且输出含有输入字符串的文件名称,但是得不到正确的结果。
  • Shell脚本学习指南之查找与替换介绍
  • C++ Strings(字符串) 成员 rfind():查找最后一个与value相等的字符(逆向查找)
  • Linux查找包含指定文字的文件(linux查找指定文件)
  • C++ Maps 成员 find():查找一个元素
  • php顺序查找与二分查找实例
  • C++ MultiMaps 成员 find():查找元素
  • php顺序查找和二分查找示例
  • C++ Strings(字符串) 成员 find():在字符串中查找字符
  • 在unix查找某个目录下一小时前的生成的文件,怎么查找?find只能按天来查。
  • C++ Strings(字符串) 成员 find_first_of():查找第一个与value中的某值相等的字符
  • vim怎么查找并替换 “[bx][si]”呢。。貌似是因为两个中括号连在一起查找不到。。
  • C++ Strings(字符串) 成员 find_last_of():查找最后一个与value中的某值相等的字符
  • Linux下怎么查找指定文件大小的文件?如查找100MB以上的文件
  • C++ Strings(字符串) 成员 find_first_not_of():查找第一个与value中的所有值都不相等的字符
  • 还发一个查找文件的贴子,给一个相对目录USR0怎样用JAVA查找其下的文件
  • C++ Strings(字符串) 成员 find_last_not_of():查找最后一个与value中的所有值都不相等的字符
  • java 折半查找法(二分查找)实例
  • Linux c++库boost unordered_set数据插入及查找代码举例
  • php字符串查找 查找字符最后一次出现位置
  • HASH查找的程序实现及性能分析
  • jquery 父页面查找iframe子页面内容、子页面查找父页面内容


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3