1

diff命令提供详细信息列表以及像这样的文件/文件夹的差异

dirs=`diff -aq new_dir/ old_dir`

给出:

Only in new_dir/: five Common subdirectories: new_dir/four and old_dir/four Common subdirectories: new_dir/one and old_dir/one

但我只想要没有详细信息的文件夹/文件名:五、四等。那是没有详细信息

我试过这样的事情:

dirs=diff -aq new_dir/ old_dir | grep 'Only in new_dir/: *'

我认为这不是仅获取文件夹差异的正确方法。有没有更好的方法来解决这个问题?

我想要的输出:

five
seven 
six

并不是

Only in new_dir/: five 
Only in new_dir/: seven 
Only in new_dir/: six
4

2 回答 2

2

您可以执行以下操作:

dir=$(diff -aq new_dir/ old_dir | awk -F": " '/Only in new_dir/{print $2}')
于 2013-07-08T17:36:14.793 回答
2

如果您只想知道dirA其中不存在的(子)目录dirB,您可以这样做:

comm -23 <(cd dirA; find . -type d -print | sort) <(cd dirB; find . -type d -print | sort)

不过,这并没有考虑目录的实际内容。您可以调整上述内容以找到反向子目录,dirB但不是dirA- 通过替换-23-13; 或使用comm -12.

如果您关心每个目录中的文件或这些文件的内容,那将变得更加困难,但这里的情况似乎并非如此......

于 2013-07-08T17:07:59.903 回答