我需要比较两个目录结构,每个目录结构大约有十亿个文件(目录深度最多20个级别)
我发现通常diff -r /location/one /location/two
慢了。
有多线程差异的实现吗?或者通过将shell
和diff
组合在一起可行吗?如果是这样,怎么样?
答案 0 :(得分:2)
你的磁盘将成为瓶颈。
除非您正在使用tmpfs,否则您可能只会放松速度。那说:
find -maxdepth 1 -type d -print0 |
xargs -0P4 -n1 -iDIRNAME diff -EwburqN "DIRNAME/" "/tmp/othertree/DIRNAME/"
应该做比较树的相当不错的工作(在这种情况下.
到/tmp/othertree
)。
它现在有一个缺陷,因为它不会检测otherthree
中.
中不存在的-P4
中的目录。 我把它作为读者的练习 - 尽管你可以轻松地反复重复比较
xargs的参数-q
指定您最多需要4个并发进程。
另外,请查看 the xjobs
utitlity ,它可以更好地分离输出。我认为使用GNU xargs(如图所示)你不能删除{{1}}选项,因为它会混合差异(?)。