嘿傢伙, 我在兩個目錄上遞歸地運行差異,有幾個選項。目錄有點大,但是,我試圖只看到文件夾內的差異,而不是文件之間,使用-q選項(我是否使用這個權利?)遞歸差異非常緩慢 - 檢查目錄的內容
我也試過rsync幹運行,這似乎同樣長期。輸出通過sed,我試過沒有,它似乎沒有影響任何東西。我也忽略隱藏的文件。我想我可能會誤用diff -q來比較2個目錄的內容。
我用另一個技巧的代碼塊來比較這些目錄中的一個是多久(1個目錄,14個子目錄),花了88分鐘。然而,每個文件都是30分鐘長的電視節目,所以如果差異比較這些文件,這是有道理的,但我認爲,-q會導致不會發生?
另外,一個目錄安裝在AFP上,一個是火線連接的外部驅動器。這並不重要,因爲我在本地複製了這兩個目錄,並且差異花費了相同的時間。 我對此有一個解決方案 - 我在兩個目錄上運行ls -1並對輸出進行diff'd - 但爲什麼diff需要這麼長時間才能運行?
這是代碼;有什麼建議麼?
#!/bin/bash
before="$(date +%s)"
diff -r -x '.*' /Volumes/directory1/ /Volumes/directory2/ | sed 's/^.\{24\}//g' > /Volumes/stuff.txt
diff -r -x '.*' /Volumes/directory3/ /Volumes/directory4/ | sed 's/^.\{24\}//g' > /Volumes/stuff.txt
diff -r -x '.*' /Volumes/directory5/ /Volumes/directory6/ | sed 's/^.\{24\}//g' > /Volumes/stuff.txt
diff -r -x '.*' /Volumes/directory7/ /Volumes/directory8/ | sed 's/^.\{24\}//g' > /Volumes/stuff.txt
diff -r -x '.*' /Volumes/directory9/ /Volumes/directory10/ | sed 's/^.\{24\}//g' > /Volumes/stuff.txt
diff -r -x '.*' /Volumes/directory11/ /Volumes/directory12/ | sed 's/^.\{24\}//g' > /Volumes/stuff.txt
after="$(date +%s)"
elapsed_seconds="$(expr $after - $before)"
echo Elapsed time for code block: $elapsed_seconds
如果沒有GNU發現,這應該工作:'DIFF <(CD /卷/ directory1中,找到)<(CD/Volumes/directory2; find。)' – 2011-03-18 00:13:39
@gordon謝謝,這絕對是在正確的軌道上(因爲我在Mac OS X上並沒有GNU查找)。你能解釋一下是怎麼回事?它看起來像你正在找到一個查找的輸出的差異。在這兩個目錄? – rick 2011-03-18 00:59:37
感謝,這是有道理的,因爲它總是發現從蝙蝠的差異,然後採取80多分鐘的剩餘部分不說話。 – rick 2011-03-18 01:00:44