
有什麼簡單的方法可以檢查兩個不同的目錄是否具有完全相同的內容?
答案1
find
、sha1sum
和一系列管道的組合可以實現此目標:
find /path/to/files -type f -print0 | sort -z | xargs -0 sha1sum | cut -c1-40 | sha1sum
這將為您提供以下輸出:
98f3a7c54a8f51dd86506a26d4d3bd90e6e4b821 -
筆記:當然,後面的破折號可以忽略。
在您想要檢查的路徑上執行此命令,您將看到兩個目錄是否相同。如果不是,您可以開始編輯命令來尋找不同的檔案。一種簡單但耗時的方法是刪除| cut -c1-40 | sha1sum
,它將列出每個檔案及其相應的 sha1 雜湊。
這是如何運作的?
解釋 | |
---|---|
find /path/to/files |
/path/to/files 傳回目錄中的項目列表 |
-type f |
僅包含文件 |
-print0 |
在標準輸出上列印完整的檔案名,後面跟著一個空字符 |
| |
進而 |
sort -z |
對清單進行排序,使用 null 作為行分隔符號而不是換行符 |
| |
進而 |
xargs -0 sha1sum |
運行清單中的每個值sha1sum |
| |
進而 |
cut -c1-40 |
拿只是前 40 個字元(sha1 的長度 |
| |
進而 |
sha1sum |
產生 sha1 列表的 sha1 哈希值 |