![在另一个目录中查找重复的文件](https://linux22.com/image/1476095/%E5%9C%A8%E5%8F%A6%E4%B8%80%E4%B8%AA%E7%9B%AE%E5%BD%95%E4%B8%AD%E6%9F%A5%E6%89%BE%E9%87%8D%E5%A4%8D%E7%9A%84%E6%96%87%E4%BB%B6.png)
我有一个名为的文件:f{number}.ext
在另一个目录中存在一个目录列表:
- 001
- 002
- 003
- ....
每个目录都包含一个文件列表:
- f001.分机
- f002.分机
- ...
每个目录中的文件名都重复,但这些是不同的文件。我需要f{number}.ext
在引用的目录列表中找到此文件()并获取根目录名称(例如003
),或者如果找不到该文件则打印一条消息。
我可以用于fdupes
这个操作吗?
答案1
你可以使用这个 Bash 脚本:
#!/bin/bash
for iNumb in '001' '002' '003' '004' '005'; do
myFile=`ls */f${iNumb}.ext 2>&1`
if [ "${myFile:0:2}" == "ls" ]
then
echo "File f${iNumb}.ext: File not found"
else
echo "File f${iNumb}.ext:" `dirname ${myFile}`
fi
done
- 处理
2>&1
文件未找到时 ls 的错误信息(例如ls: cannot access */f005.ext: No such file or directory
)。 - 测试
if
字符串是否myFile
以 开头ls
(那么我们遇到错误)或不以 开头(那么我们找到了一个文件)。 dirname
返回目录。basename
将返回文件名。