2013-05-09 55 views
4

比方说,有两个迪尔斯如何比较bash中两个director的内容?

/path1 and /path2 

例如

/path1/bin 
/path1/lib 
/path1/... 

/path2/bin 
/path2/lib 
/path2/... 

而且需要知道如果他们是由相同的内容(文件和文件的内容的名称),如果没有差异列出了

如何在Linux中执行此操作? 是否有一些Bash/Zsh命令?

回答

5

diff命令可以显示所有两个目录之间的差异: diff -qr /path1 /path2

+1

什么是“a”和“b”?你也想要'-r' – 2013-05-10 00:13:48

+0

@glenn你是对的。我的错。我更新了它。 – Lynch 2013-05-10 00:29:11

1

我使用这个脚本这样的任务:

diff <(cd "$dir1"; find . -type f -printf "%p %s\n" | sort) \ 
    <(cd "$dir2"; find . -type f -printf "%p %s\n" | sort)  

随意在<(...)部分脚本调整您的特定需求。该版本使用find通过打印其中找到的文件的路径和大小来打印目录内容。其他的事情当然是可能的。

+0

不错的提示:<(...) – Bohdan 2013-05-10 00:55:54

3

有人建议这已经删除了,但他们的回答,不知道为什么。尝试使用rsync

rsync -avni /path1/ /path2 

这个程序通常会同步两个文件夹,但它-n会做,而不是干运行。