2010-10-25 42 views

回答

11

cmp沒有這個選項,因爲它總是退出第一個不匹配。

$ cmp -b /bin/ls /bin/sed 
/bin/ls /bin/sed differ: byte 25, line 1 is 320 M-P 300 [email protected] 
+0

我對Linux很新,所以我會用它作爲藉口:) ...我用-l選項試了一下,無論如何..我看着(但沒有嘗試) -b選項,因爲該手冊頁只說「打印不同的字節」,並沒有提及退出......現場學習! ...謝謝.. – 2010-10-25 09:35:16

+0

'-b'選項只是爲了說明,如果省略,行爲仍然是你想要的。可悲的是,許多標準的工具(來自GNU的)都有非常差的manpages。 – 2010-10-25 09:40:21

4

我想你可以通過使用3個工具去:

  • cmp
  • diff
  • md5sum

cmp是二進制文件和diff更好的文本更好文件 二進制文件diff只是報告它們是否不同。 diff也適用於目錄。

前兩個中的任何一個都可以完成你默默需要的東西。 diff使用-q開關,cmp使用-s開關告訴你一個返回碼:0如果兩個文件匹配,則返回1,如果不匹配則返回0。

cmp也有一個很好的選擇來避免(有點)讀取整個文件(如果你有大文件,那就很好):如果你知道這些文件可能在前N行或N行和M行之間不同,做(即:用於行N = 10和M = 20):

cmp file1 file2 10 20 

我加md5sum到列表中,因爲如果你有充分的時間來計算的MD5校驗的機會,你編輯這些文件中的一個,那麼你只能比較一下才能快速找到它們是否匹配。在這種情況下,我假設你有很多文件要比較。

+0

謝謝,但它沒有那麼多*沉默*的問題,因爲它是關於不通過5 GB的數據不必要地徘徊... – 2010-10-25 09:40:40

+0

再次,感謝您的額外信息..我想這個一次性比較2 DVD .iso的(以及將來的參考),所以我肯定是在快速退出之後出現了不匹配的情況......(您提供更全面的答案的額外努力會讓您對我產生一種印象:) – 2010-10-25 11:13:52

相關問題