linux - 查找特定文件或特定文件集的重复项的最佳方法

标签 linux bash

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

详细说明,如果我打电话

fdupes dir1 dir2

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

fdupes-alternative file dir

dir中查找file的重复项,而不必担心dir中的重复文件。或者甚至能够做类似的事情

fdupes-alternative dir1 dir2

并检查dir1中的任何文件是否在dir2中重复,再次忽略重复项,如果它们都在dir1dir2中。

是否有任何工具可以执行此类操作,或者有任何简单的方法可以执行此类操作?

最佳答案

您可以筛选感兴趣的内容的组。

假设 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
            }
    }

关于linux - 查找特定文件或特定文件集的重复项的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55562080/

相关文章:

linux - 通过自己的脚本临时更改 bash 提示符

arrays - 在 bash 中循环时更改数组值

c++ - 构建 Armadillo 线性代数库,无法与 Ubuntu 14.04.3 LTS 上的 SuperLU 链接。制作共享对象时不能使用X

bash - Bash 脚本中的 SSH 搞乱文件读取

linux - 双引号 bash 脚本 linux

c - 函数的隐式声明

bash - 多行SSH远程脚本

linux - 命令 `sudo nmap -sP -n 192.168.0.0-255` 的含义是什么?

linux - 克服 HDFS-2556 : unit tests directory and permissions

c++ - 如何在 Gtk 中创建带有图像的组合框?