我有两个目录A和B。每个包含很多子目录
geom001, geom002 ....etc
每个子目录都包含一个名为results的文件。我想在不打开任何文件的情况下将A中的每个文件与B中的每个文件进行比较,并查找A中是否有一个文件或更多个文件,类似于B中的一个或多个文件。我如何在a中使用类似以下的命令循环搜索所有文件?
cmp --silent file1 file2 || echo "file1 and file2 are different"
如果文件完全相同,则它们md5sum
的将会完全相同,因此您可以使用:
find A/ B/ -type f -exec md5sum {} + | sort | uniq -w32 -D
md5sum总是正好是128位(或16个字节或32个十六进制数字)长,并且md5sum
程序输出使用十六进制数字。因此,我们使用命令-w32
上的选项uniq
仅比较每行的前32个字符。
这将打印所有带有非唯一md5sum的文件。即重复。
注意:无论文件在A /或B /中的什么位置,它都会检测到重复的文件,因此,如果/A/subdir1/file
和A/subdir2/otherfile
相同,它们仍会被打印。如果有多个重复项,将全部打印出来。
您可以通过管道进入,例如,从出的MD5SUMS,awk '{print $2}'
或用cut
或者sed
等我离开他们的输出,因为他们是一个关联数组有用的密钥(也称为一个“哈希”)中awk
或perl
等进一步加工。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句