2011-08-23 44 views
3

我需要將兩個目錄結構(最多目錄深度20級)比較大約十億文件的每個DIFF文件夾遞歸與多線程

我發現平常diff -r /location/one /location/two緩慢。

是否有任何多線程差異的實現?或者可以通過將shelldiff結合在一起來實現嗎?如果是這樣,怎麼樣?

回答

2

您的磁盤將成爲瓶頸。

除非你正在研究tmpfs,否則你可能只會失去速度。這就是說:

find -maxdepth 1 -type d -print0 | 
    xargs -0P4 -n1 -iDIRNAME diff -EwburqN "DIRNAME/" "/tmp/othertree/DIRNAME/" 

應該做的比較樹(在這種情況下./tmp/othertree)的一個相當不錯的工作。

它現在有一個缺陷,因爲它不會檢測到在.中不存在otherthree的頂層目錄。 我離開,作爲一個練習留給讀者 - 雖然你可以很容易地重複最多4個併發進程反向

的參數-P4到xargs的指定要進行比較。

也看看the xjobs utitlity哪個在分離輸出方面做得更好。我認爲用GNU xargs(如圖所示)不能刪除-q選項,因爲它會混合差異(?)。

+0

很好,雖然這個小問題是非常好的解決方案,謝謝! –

+1

可能對[GNU並行](http://www.gnu.org/software/parallel/) – hometoast

+1

@hometoast或make -j 或xjobs或... UNIX 1-tool-1-job工作中的哲學:) – sehe