我想知道如果我能做到以下情况,比我的情况更好。
目标:在目录树中识别具有相同名称的文件。如果有任何重复文件或此类文件的位置/名称,我不知道。
预期输出:列出具有该位置的文件。
提供的输入:搜索的顶级目录的路径。
我的算法:
1.列出目标目录中的所有文件(我使用了find -name"。")
2.List1:对文件名进行排序
3.List2:Uniquify文件名
4.Diff列表来自第2步& 3获取重复文件
5.提取位置。
Sample Directory:
temp/
|-- d1
| |-- d2
| | `-- f3
| |-- d3
| | `-- f3
| |-- f1
| `-- f2
`-- d4
|-- d5
| |-- f2
| `-- f6
|-- f4
`-- f5
> find temp/ -type f -follow -print | sed 's;.*/;;' | sort -u > ~/tmp/12
> find temp/ -type f -follow -print | sed 's;.*/;;' | sort -n > ~/tmp/11
> diff ~/tmp/11 ~/tmp/12
3,4d2
< f2
< f3
> find temp/ -name f2
temp/d1/f2
temp/d4/d5/f2
> find temp/ -name f3
temp/d1/d2/f3
temp/d1/d3/f3
我想简化这个过程。任何帮助都会得到满足。如果您需要更多详细信息,请与我们联系。
答案 0 :(得分:0)
伙计这是我认为符合我需求的解决方案,可能对您有所帮助: 欢迎您提出意见。
set idirectory = `echo $* | awk '{print $1}'`
if ( -d $idirectory ) then
foreach xxx (`find $idirectory -type f -follow -print | sed 's;.*/;;' | sort -n | uniq -d`)
echo "Multiple files found for " $xxx
find $idirectory -name $xxx
end
endif