Directory

使用 diff 比較目錄

  • October 18, 2017

我正在嘗試在 AIX 6 上比較兩個包含二進製文件的目錄。我diff優先使用dircmp,因為我試圖在此伺服器和我的 Linux 伺服器之間保持一致的輸出格式,而其中dircmp不可用。

根據diff man頁面,

如果指定了 Directory1 和 Directory2 參數,則 diff 命令比較兩個目錄中具有相同名稱的文本文件。列出了不同的二進製文件、公共子目錄和僅出現在一個目錄中的文件。

但是,二進製文件也在進行比較,它們的差異輸出到標準輸出,導致終端螢幕被不可列印的字元淹沒,甚至修改了我的視窗大小(我正在使用pUTTY)。的版本diff沒有-q選項。有什麼方法可以抑制此輸出並僅報告文件不同?我不想使用rsync -n,因為它需要執行兩次,並且 to 和 from 參數顛倒,才能在兩邊找到失去的文件。

相關問題:這里這裡

您可以編寫多少可移植程式碼而無需條件來在不同系統上執行不同的事情是有限制的。dircmp如果可用,請不要對使用或GNU diff (如果可用)感到難過。

if type dircmp >/dev/null 2>/dev/null; then
 dircmp dir1 dir2
else
 diff -r dir1 dir2
fi

如果您只想知道哪些文件已更改而不關心列出內容,則可以過濾diff輸出以僅保留標題行。(警告:如果文件名帶有換行符,則輸出可能無法解析。)

diff -r dir1 dir2 | grep -v '^[<>0-9]'

這樣做grep -v '[^<>]'可以保留有關更改行範圍的資訊,但仍會過濾掉更改行的內容。

引用自:https://unix.stackexchange.com/questions/231530