Multithreading 递归与多线程区分文件夹

Multithreading 递归与多线程区分文件夹,multithreading,performance,shell,unix,diff,Multithreading,Performance,Shell,Unix,Diff,我需要比较两个目录结构,每个目录结构大约有10亿个文件(目录深度高达20个级别) 我发现通常的diff-r/location/one/location/two速度很慢 是否有多线程差异的实现?还是可以通过将shell和diff组合在一起?如果是这样,怎么做?您的磁盘将成为瓶颈 除非你在tmpfs上工作,否则你可能只会失去速度。也就是说: find -maxdepth 1 -type d -print0 | xargs -0P4 -n1 -iDIRNAME diff -EwburqN "D

我需要比较两个目录结构,每个目录结构大约有10亿个文件(目录深度高达20个级别)

我发现通常的
diff-r/location/one/location/two
速度很慢


是否有多线程差异的实现?还是可以通过将
shell
diff
组合在一起?如果是这样,怎么做?

您的磁盘将成为瓶颈

除非你在tmpfs上工作,否则你可能只会失去速度。也就是说:

find -maxdepth 1 -type d -print0 |
    xargs -0P4 -n1 -iDIRNAME diff -EwburqN "DIRNAME/" "/tmp/othertree/DIRNAME/"
在比较树方面应该做得相当不错(在本例中,
/tmp/othertree

它现在有一个缺陷,它不会检测到
中其他三个
中不存在的顶级目录。我把它留给读者作为练习——尽管你可以很容易地反过来重复比较

xargs的参数
-P4
指定最多需要4个并发进程


另外,请看,它在分离输出方面做得更好。我认为,使用GNUxargs(如图所示),您不能放弃
-q
选项,因为它将混合差异(?)

很好,虽然这个小问题是很好的解决方案,谢谢!对于@hometoast或make-j或xjobs或。。。UNIX 1-tool-1-job工作原理:)