ตรวจสอบว่ามีไฟล์สองไฟล์ในไดเรกทอรีเหมือนกันหรือไม่?


1

ฉันกำลังทำงานกับ OSX และฉันมีไฟล์ CSV หลายไฟล์ในไดเรกทอรี ฉันต้องการตรวจสอบว่าพวกเขาสองคนเหมือนกันหรือไม่

ฉันได้ลองแล้ว:

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

สิ่งนี้บอกฉันว่าสองไฟล์แรกแตกต่างกัน

ฉันยังลอง:

 diff -q --from-file *.csv

สิ่งนี้บอกฉันว่า เป็นครั้งแรก ไฟล์แตกต่างจากไฟล์อื่นทุกไฟล์

แต่ฉันจะตรวจสอบเรื่องนี้กับไฟล์ทุกไฟล์ได้อย่างไร

คำตอบ:


3

งานต่อไปนี้สำหรับฉันใน Linux ฉันไม่มี Mac Terminal เพื่อทดสอบว่าใช้งานได้หรือไม่

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

8c3c2e6aa3be26d9f1bbbcd9a401e88e *x
8c3c2e6aa3be26d9f1bbbcd9a401e88e *z

โปรแกรม uniq ต้องป้อนข้อมูลเรียงลำดับ ตรวจสอบ man page ของตัวเลือกเอาต์พุตอื่น ๆ


รุ่นอะไร uniq คุณกำลังใช้ ฉันไม่สามารถหาที่มี --group ตัวเลือก
hymie

uniq (coreutils GNU) 8.23
Steven

ล่าสุดที่ฉันเห็นในการผลิตคือ v8.21. อย่างไรก็ตามนั่นไม่ได้เป็นเรื่องใหญ่ตั้งแต่ -d ตัวเลือกทำในสิ่งเดียวกัน
Davide

1

นอกจากคำตอบของสตีเว่นคุณควรป้อนสิ่งนี้ลงในเทอร์มินัล

shasum * | sort | uniq 

และนั่นควรให้ผลลัพธ์แก่คุณ


0

สิ่งที่คุณต้องการจริงๆคือเชลล์สคริปต์ที่ดี สคริปต์เชลล์เด ธ สมองจะเป็น:

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

แน่นอนว่าปัญหานี้คือการตรวจสอบแต่ละไฟล์กับไฟล์อื่น ๆ รวมถึงตัวเองแม้ว่าจะได้ทำการตรวจสอบแล้ว ฉันแน่ใจว่ามีสคริปต์ awk ที่ดีที่จะทำสิ่งที่ถูกต้องในพื้นที่ที่น้อยลง แต่ฉันไม่รู้สึก awk-ish มากในขณะนี้

ตัวเลือกอื่น ๆ ที่แตกต่างที่คุณอาจต้องการพิจารณาคือ - ถ้าพื้นที่สีขาวไม่มีผลใด ๆ - b หากการปรากฏตัวของพื้นที่สีขาวมีความสำคัญ แต่คุณไม่สนใจว่าจะมีชนิดใดหรือมีประเภทไหน - แถบ - trailing-cr หากไฟล์บางไฟล์สร้างขึ้นในระบบที่คิดว่ามันต้องการทั้งบรรทัดใหม่และการขึ้นบรรทัดใหม่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.