获取两个文件树之间不同的文件列表

时间:2012-10-02 08:25:14

标签: file grep diff filetree

我正在比较两个非常大的文件系统(与迁移有关)和diff -qr很棒但是现在由于用户使用新位置,文件已经改变了。我有一种方法可以使用diff,grep或其他任何东西来比较文件是否存在,即:忽略文件不同的事实。最新的差异有很多: 仅在/ dir1 / myFile中 仅在/ dir2 / myFile中 在里面。有没有一种简单的方法可以使用grep来显示dir2中根本不存在的文件,这些文件存在于dir1中或者使用diff执行类似的操作。

3 个答案:

答案 0 :(得分:1)

你可以使用:

tree /path/to/dir1 > out1
tree /path/to/dir2 > out2
diff out1 out2 | grep ">"

但我发现beyond compare更适合这样的工作。

答案 1 :(得分:1)

您也可以使用命令comm

comm -1 -2<(ls / path_to_dir-1 /)<(ls / path_to_dir-2 /)

请查看以下链接以获取更多信息:

http://nixtricks.wordpress.com/2010/01/11/unix-compare-the-contents-of-two-directories-in-the-command-line/

答案 2 :(得分:0)

上面的一个内容很棒,但是这个bash脚本可以让您进行更多自定义:可以将-e更改为! -e或跳过某些文件。

for f in $(find old/ -type f) ; do if [ -e "new/${f}" ] ; then echo "${f} exists" ; fi ; done