查找两个文件夹之间的差异

时间:2011-12-22 16:24:46

标签: md5

我想用同一个应用程序打开两个文件夹。对我来说,两个文件夹似乎相同,但对于应用程序,它们不是。

首先,我使用此命令查找文件夹内容的任何差异:

find folder/ -type f -name * -exec md5 {} + | awk '{print $1}' | sort | md5

此命令为两个文件夹生成相同的结果。但后来,我尝试了这个命令:

tar c folder/ | md5

此命令为两个文件夹生成不同的输出。对于一个文件夹,该命令的完成时间也比另一个文件夹要长。

我正在使用Mac OS X Snow Leopard。这是怎么回事?

3 个答案:

答案 0 :(得分:4)

tar c在其压缩中包含文件夹名称,因此除非文件夹具有相同的确切名称,否则会导致不匹配。


还要记住 tar会尝试恢复压缩文件使用的权限,如果文件夹没有相同的确切权限,也可能导致不匹配,以及所有权。

要查看两个文件夹的权限/所有权是否相同,请使用以下内容,管道传输到sort | md5或其他任何内容。

find foobar -exec stat -f "%p:%N:%u:%g" {} \;

上面的输出中会有文件夹名称“foobar”,你应该将其删除,你可以使用这样的东西:

find foobar -type f -exec stat -f "%N:%p:%u:%g" {} \; | sed 's/^foobar//'

我的推荐

如果您只是想查看文件内容及其相应文件名是否匹配,请使用diff实用程序而不是您自己的自定义书面版本,如下所示:

diff -r folder1 folder2

diff

的文档

答案 1 :(得分:1)

你试过了吗?

diff -r folder1 folder2

不确定Max OS X Snow Leopard上是否可以使用。这应该会给你文件夹之间存在的任何差异。正如其他答案所说,tar包含文件夹名称,因此导致不同的校验和。

答案 2 :(得分:0)

tar会记住相对目录结构。具体来说,tar c folder1/的第一个字节将包含"folder1/"tar c folder2/代之以"folder2/"。试试(cd folder && tar c .) | md5,看看会发生什么?