ฉันมีไฟล์จำนวนมากในไดเรกทอรีและฉันต้องการตรวจสอบว่าพวกเขาทั้งหมดไม่ซ้ำกัน สำหรับความเรียบง่ายสมมติว่าผมมีสามไฟล์: foo.txt
, และbar.txt
baz.txt
หากฉันใช้วงนี้ฉันจะตรวจสอบพวกเขาทั้งหมดต่อกัน:
$ for f in ./*; do for i in ./*; do diff -q "$f" "$i"; done; done
Files bar.txt and baz.txt differ
Files bar.txt and foo.txt differ
Files baz.txt and bar.txt differ
Files baz.txt and foo.txt differ
Files foo.txt and bar.txt differ
Files foo.txt and baz.txt differ
สำหรับไฟล์หลายร้อยไฟล์ที่ฉันต้องการจัดการมันจะไม่สามารถอ่านได้ มันจะดีกว่าที่จะแสดงรายการไฟล์ที่ทำการแข่งขันและจากนั้นผมสามารถมองผ่านรายการได้อย่างรวดเร็วและตรวจสอบให้แน่ใจว่าไฟล์ที่เป็นเพียงที่ตรงกับตัวเอง จาก manpage ฉันจะคิดว่า-s
ตัวเลือกจะสำเร็จ:
$ for f in ./*; do for i in ./*; do diff -s "$f" "$i"; done; done
Files bar.txt and bar.txt are identical
Files baz.txt and baz.txt are identical
Files foo.txt and foo.txt are identical
... อย่างไรก็ตามในความเป็นจริงมันยังพิมพ์เนื้อหาทั้งหมดของไฟล์ใด ๆ ที่แตกต่างกัน มีวิธีใดที่จะระงับพฤติกรรมนี้ดังนั้นฉันจะได้รับพฤติกรรมดังกล่าวข้างต้นเท่านั้นหรือไม่
อีกวิธีหนึ่งมีเครื่องมืออื่น ๆ ที่สามารถทำได้หรือไม่