为了通过迭代每个文件夹来比较结构,我尝试列出每个目录和文件的输出(到文本文件):
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_one
和dir_two
。然后,假设 bash:
列出所有内容两个都 dir_one
和dir_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