首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

shell脚本实现查找目录上同名但不同后缀名的文件

2012-07-24 
shell脚本实现查找目录下同名但不同后缀名的文件?原创作品,允许转载,转载时请务必以超链接形式标明文章?原

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

?

原创作品,允许转载,转载时请务必以超链接形式标明文章?原始出处?、作者信息和本声明。否则将追究法律责任。http://wukui127.blog.51cto.com/2866802/801083

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


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

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

    本文出自 “我就是我非此非彼” 博客,请务必保留此出处http://wukui127.blog.51cto.com/2866802/801083

  • 热点排行