linux - 查找两个文件夹之间的共同文件

标签 linux bash

给定两个根文件夹 A 和 B,

如何在 A 和 B 的子文件夹之间找到重复的文本文件?

换句话说,我正在考虑来自 A 和 B 的文件的交集。

我不想在 A 或 B 中查找重复文件,而只想在 A 和 B 中查找文件。

编辑

重复是指内容相同的文件

最佳答案

如评论部分所述,我将为每个文件生成一个 MD5 校验和,只生成一次 - 然后查找重复的校验和。

像这样:

find DirA -name \*.txt -exec md5sum {} +  > /tmp/a
find DirB -name \*.txt -exec md5sum {} +  > /tmp/b

现在找出两个文件中出现的所有校验和。

因此,沿着这些思路:

awk 'FNR==NR{md5[$1];next}$1 in md5' /tmp/[ab]

或者像这样:

awk 'FNR==NR{s=$1;md5[s];$1="";name[s]=$0;next}$1 in md5{s=$1;$1="";print name[s] " : " $0}' /tmp/[ab]

关于linux - 查找两个文件夹之间的共同文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38827243/

相关文章:

bash - 从 Imagemagick 修剪中获取偏移量

bash - 在 bash 脚本中正确转义 Json 命令行选项

Bash - 在文件名中间添加 0

linux - 返回包含指定字符串的全局变量列表的脚本

linux - 如何使用批处理脚本或linux cmmand将特定扩展文件从目录和子目录复制到其他目录

linux - 组合输入和输出 shell IO 重定向(以非标准顺序)

Linux:cat/dev/video0 进入不增长的缓冲区

linux - Ubuntu sudo错误

linux - 如何 QLOGIN 到共享特定作业 ID 的节点

bash - 如果存储在局部变量中,函数调用的退出代码将被忽略