如何比较2个linux文件夹的内容和模式?

时间:2017-04-28 00:47:15

标签: linux

给出centos中的2个文件夹:/ folder1和/ folder2,每个文件夹里面都有一些文件和子文件夹。
我使用超越比较3来比较内容,但不知道如何同时比较文件模式和所有者。

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

如果不必一次完成,您可以先diff <(cd /folder1; ls -lR) <(cd /folder2; ls -lR) | grep '^[<>]'获取所有者/模式差异,然后diff -r /folder1 /folder2获取内容差异。

如果您真的希望一次完成它,您可以为每个目录生成一个列表,其中包括名称,所有者,模式和校验和,并比较这两个目录。这只会告诉你哪些文件不同,而不是它们的变化。

diff \
    <(find /folder1 -printf '%P\t%u:%g\t%M' \( \
        -type b -exec stat -c '\tb:%t:%T\n' -- '{}' \; -o \
        -type c -exec stat -c '\tc:%t:%T\n' -- '{}' \; -o \
        -type d -printf '/\n' -o \
        -type p -printf '|\n' -o \
        -type f -printf '\t' -exec sum -- '{}' \; -o \
        -type l -printf '\t-> %l\n' -o \
        -type s -printf '=\n' -o \
        -printf '\t???\n' \) | sort) \
    <(find /folder2 -printf '%P\t%u:%g\t%M' \( \
        -type b -exec stat -c '\tb:%t:%T\n' -- '{}' \; -o \
        -type c -exec stat -c '\tc:%t:%T\n' -- '{}' \; -o \
        -type d -printf '/\n' -o \
        -type p -printf '|\n' -o \
        -type f -printf '\t' -exec sum -- '{}' \; -o \
        -type l -printf '\t-> %l\n' -o \
        -type s -printf '=\n' -o \
        -printf '\t???\n' \) | sort) | \
grep '^[<>]'