查找特定文件或一组特定文件的副本的最佳方法

时间:2019-04-07 18:02:25

标签: linux bash

我一直在使用fdupes在文件系统中查找重复的文件,但是,我经常发现自己想要查找特定文件的重复或查找文件的重复在特定目录中。

详细说明,如果我打电话

fdupes dir1 dir2

结果将是在dir1dir2中收集的文件集中找到的所有重复文件。但是,我真的很想能够做类似的事情

fdupes-alternative file dir

file中查找dir的副本,而不会为dir中的重复文件所困扰。甚至能够做到

fdupes-alternative dir1 dir2

并再次检查dir1中是否有dir2中的任何文件,而忽略重复项是否全部位于dir1dir2中。 / p>

有没有做这种事情的工具,或者有做这种事情的简便方法?

1 个答案:

答案 0 :(得分:0)

您可以根据兴趣内容过滤组。

假设每个文件的行的输出格式为fdupes加上空白行来分隔各个组,如果您对文件感兴趣,请对包含文件名作为行的组进行过滤。例如,使用awk:

fdupes file dir |\
awk -v F=file '
    BEGIN { FS="\n"; RS="\n\n" }
    {
        for (i=NF; i; i--)
            if ($i==F) {
                printf("%s%s", x++?RS:"", $0)
                break
            }
    }
'

如果您对目录感兴趣,请过滤包含以该目录开头的行的组。例如,再次使用“ awk”:

fdupes dir1 dir2 |\
awk -v D=dir1/ '
    BEGIN { FS="\n"; RS="\n\n" }
    {
        for (i=NF; i; i--)
            if (index($i,D)==1) {
                printf("%s%s, x++?RS:"", $0
                break
            }
    }