我想用同一个应用程序打开两个文件夹。对我来说,两个文件夹似乎相同,但对于应用程序,它们不是。
首先,我使用此命令查找文件夹内容的任何差异:
find folder/ -type f -name * -exec md5 {} + | awk '{print $1}' | sort | md5
此命令为两个文件夹生成相同的结果。但后来,我尝试了这个命令:
tar c folder/ | md5
此命令为两个文件夹生成不同的输出。对于一个文件夹,该命令的完成时间也比另一个文件夹要长。
我正在使用Mac OS X Snow Leopard。这是怎么回事?
答案 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
,看看会发生什么?