我通常用临时名称命名文件,然后根据需要重命名它。
现在,我在不同的位置有两个同名的迪伦,文件的大小和数量相同,但是文件的名称不同。
那么,我的问题是如何知道这个目录是否与那个目录相同?
发布于 2015-06-17 07:38:45
正如我所理解的,我找到了解决方案:只在两个目录中查找文件,获取每个文件的md5哈希,排序,并验证散列是否匹配。
在bash中,可以使用find -type f
参数只获取文件,并使用-exec md5sum {} \;
从文件中获取MD5散列,从而从dir获取所有文件(包括子目录)。通过这种方式,您必须切断文件名和排序,使用|cut -d\ -f1
和|sort
对生成的散列进行排序。使用这两个dir,并将输出推送到每个dir的文件中:
find path/to/dir1 -type f -exec md5sum "{}" \; |cut -d\ -f1 |sort > /tmp/hashes_dir1
find path/to/dir2 -type f -exec md5sum "{}" \; |cut -d\ -f1 |sort > /tmp/hashes_dir2
之后,您只需比较生成的文件:
diff /tmp/hashes_dir1 /tmp/hashes_dir2
如果上述输出为空,则两个dir文件的内容相同。如果没有(例如,只有一个目录中有一个重复的文件),则输出不会为空。
编辑:此外,您还可以看到对应的文件从两个第一命令中切断cut
和sort
管道,将输出推送到同一个文件,并使用cat
打印文件,用sort
打印管道以进行比较:
find path/to/dir1 -type f -exec md5sum "{}" \; > /tmp/hashes_dir
find path/to/dir2 -type f -exec md5sum "{}" \; >> /tmp/hashes_dir
cat /tmp/hashes_dir |sort
通讯文件将出现在另一个旁边。
Edit2:看看它是如何工作的:http://pastebin.com/dW7LrZkR
https://askubuntu.com/questions/637648
复制