手机
当前位置:查字典教程网 >脚本专栏 >linuxshell >查找目录下同名但不同后缀名文件的shell脚本代码
查找目录下同名但不同后缀名文件的shell脚本代码
摘要:因为后台录入的同事,上传文件的时候,给文件取了相同的名字,但不同的后缀名,由于文件路径非常深,大概十层左右,每一层又有几十个文件,所以人工找...

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

复制代码 代码如下:

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

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

【查找目录下同名但不同后缀名文件的shell脚本代码】相关文章:

两个备份数据库的shell脚本

收集的55个Linux系统管理中常用的一些shell命令

一个简单的转换输出的shell脚本代码

ssh远程执行命令方法和Shell脚本实例

shell脚本编写的俄罗斯方块游戏代码

检测网站down掉后自动发信的shell脚本代码

批量转换目录下文件编码的shell脚本代码

几个常用的Linux操作系统监控脚本代码

shell遍历目录处理特定目录的脚本代码

防止ARP攻击的shell代码

精品推荐
分类导航