檢查目錄中的任何兩個檔案是否相同?

檢查目錄中的任何兩個檔案是否相同?

我正在 OSX 上工作,目錄中有多個 CSV 檔案。我想檢查其中是否有兩個相同。

我試過了:

cmp file1.csv file2.csv || echo "files are different"

這告訴我前兩份文件是不同的。

我也嘗試過:

 diff -q --from-file *.csv

這告訴我,第一的文件與其他文件不同。

但是我怎麼能檢查每個文件,而不必手動執行呢?

答案1

以下內容在 Linux 中對我有用。我沒有 Mac 終端機來測試這是否有效。

$ md5sum * | sort | uniq --check-chars=32 --group
36da49e13da596245e85e9e47ab8a04f *y

8c3c2e6aa3be26d9f1bbbcd9a401e88e *x
8c3c2e6aa3be26d9f1bbbcd9a401e88e *z

該程式uniq需要排序的輸入。檢查其手冊頁以了解其他輸出選項。

答案2

除了史蒂文的答案之外,您還應該在終端機中輸入以下內容:

shasum * | sort | uniq 

這應該會為您提供結果。

答案3

你真正想要的是一個漂亮的 shell 腳本。一個腦殘的 shell 腳本是:

for i in `ls`; do diff -sq --from-file=$i `ls` 2> /dev/null; done | grep identical

當然,這樣做的問題是,它會根據每個其他文件(包括其自身)檢查每個文件,即使檢查已經完成。我確信有一個很好的 awk 腳本可以在更小的空間中做正確的事情,但我現在感覺不太像 awk 那樣。

您可能想要考慮的其他 diff 選項是 -w 如果空白沒有影響, -b 如果空白的存在很重要但您真的不關心有多少或是什麼類型, --strip- Trailing-cr 如果某些檔案是在認為需要換行和回車的系統上創建的。

相關內容