在目录中查找具有相同名称的文件

时间:2014-07-08 06:55:46

标签: shell

我想知道如果我能做到以下情况,比我的情况更好。

目标:在目录树中识别具有相同名称的文件。如果有任何重复文件或此类文件的位置/名称,我不知道。

预期输出:列出具有该位置的文件。

提供的输入:搜索的顶级目录的路径。

我的算法:

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

我想简化这个过程。任何帮助都会得到满足。如果您需要更多详细信息,请与我们联系。

1 个答案:

答案 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