Answers:
janos已经说了怎么办:
find /a -exec stat -c '%A %C %F %g %u %s %Y %n' {} \; >a
find /b -exec stat -c '%A %C %F %g %u %s %Y %n' {} \; >b
diff -u a b
并man 1 stat
说:
%A access rights in human readable form
%C SELinux security context string
%F file type
%g group ID of owner
%u user ID of owner
%s total size, in bytes
%Y time of last modification, seconds since Epoch
%n file name
要比较文件内容,可以使用:
find -type f -exec md5sum '{}' ';' | sort | uniq --all-repeated=separate -w 33 | cut -c 35-
as described here: http://www.commandlinefu.com/commands/view/3555/find-duplicate-files-based-on-size-first-then-md5-hash
find
具有stat
内置的GNU的功能(并且比GNU stat早几十年)。您还需要在比较之前对输出进行排序。并且您需要(cd /a && find . ...)
否则所有行都将因文件路径中的/a
vs 而有所不同/b
。
这是我编写的用于比较扩展属性的快速bash脚本。它打印出每个文件名,然后打印出属性中的所有差异:
cd a
export relpath=[path/to/b/from/a]
for filename in $(find .);
do
echo $filename;
diff <(xattr -l $filename) <(xattr -l $relpath/$filename);
done
从另一个答案中借用,我们可以将其修改为stat
代替xattr
:
for filename in $(find .);
do
echo $filename;
diff <(stat -c '%A %C %F %g %u %s %Y' $filename) <(stat -c '%A %C %F %g %u %s %Y' $relpath/$filename);
done