比较两个单独的目录中的目录和文件

比较两个单独的目录中的目录和文件

为了通过迭代每个文件夹来比较结构,我尝试列出每个目录和文件的输出(到文本文件):

diff --brief -Nr dir1/ dir2/ > out.txt

我得到的输出仅针对文件中的差异。我想要的输出将遍历文件夹并指定该文件夹是否存在于另一个目录中。这对于完整的结构、文件和文件夹应该有效。

cat out.txt:

Files abc/def/xy.txt and pqr/def/xy.txt differ
Files abc/ooo/q.txt and pqr/ooo/q.txt differ
Files abc/ooo/t.txt and pqr/ooo/t.txt differ

答案1

假设有两个目录树:dir_onedir_two。然后,假设 bash:

列出所有内容两个都 dir_onedir_two

comm -12 <(cd dir_one ; find | sort) <(cd dir_two ; find | sort)

列出所有这些存在于dir_one, 但是不是dir_two

comm -23 <(cd dir_one ; find | sort) <(cd dir_two ; find | sort)

最后,列出所有内容不是dir_one,但是存在于dir_two

comm -13 <(cd dir_one ; find | sort) <(cd dir_two ; find | sort)

答案2

我想要的输出将迭代文件夹并指定该文件夹是否存在于另一个目录中

考虑这些目录/文件:

tree dir1/ dir2/
dir1/
|-- bar
|-- foo
`-- subdir_dir1
dir2/
`-- foo

这个变体不能diff满足您的需求吗?

diff -rq dir1 dir2
Only in dir1: bar
Only in dir1: subdir_dir1

相关内容