เปรียบเทียบเนื้อหาของสองไดเร็กทอรีจากบรรทัดคำสั่ง

Anonim

ในการเปรียบเทียบและแสดงรายการเนื้อหาที่แตกต่างกันของสองไดเร็กทอรีโดยไม่มีเอาต์พุตพิเศษที่คุณได้รับผ่านคำสั่งเช่น diff คุณสามารถใช้คำสั่ง comm แทนได้ ในการเริ่มต้น ให้เปิด Terminal แล้วพิมพ์คำสั่งต่อไปนี้ ปรับเส้นทางไดเร็กทอรีตามความเหมาะสม:

comm -3 <(ls -1 folder1) <(ls -1 folder2)

ผลลัพธ์ที่แสดงจะเป็นไฟล์ที่แตกต่างกันในแต่ละโฟลเดอร์ โดยไฟล์เฉพาะสำหรับโฟลเดอร์ 1 จัดชิดซ้าย และไฟล์เฉพาะสำหรับโฟลเดอร์ 2 จัดชิดขวา

ตัวอย่างเช่น ในการเปรียบเทียบเนื้อหาของโฟลเดอร์ชื่อ “Pictures” และโฟลเดอร์ชื่อ “OldPictures” ซึ่งทั้งคู่จัดเก็บไว้ในไดเร็กทอรีการดาวน์โหลดของผู้ใช้ ไวยากรณ์จะเป็นดังต่อไปนี้:

comm -3 <(ls -1 ~/ดาวน์โหลด/รูปภาพ) <(ls -1 ~/ดาวน์โหลด/รูปภาพเก่า)

Output อาจมีลักษณะดังต่อไปนี้:

$ comm -3 <(ls -1 ~/Downloads/Pictures) <(ls -1 ~/Downloads/OldPictures) Folder-1-File.PNG โฟลเดอร์ -2-ไฟล์สำเนาภาพ PNG 1 ไฟล์ภาพ PNG 3.PNG

สังเกตการย่อหน้า ซึ่งจะแสดงให้คุณเห็นว่าไฟล์ใดไม่ซ้ำกันในแต่ละโฟลเดอร์ ในตัวอย่างข้างต้น ไฟล์ “photo 1 copy.PNG” และ “photo 3.png” ถูกจัดเรียงชิดขวา ดังนั้นจึงไม่ซ้ำกับไดเร็กทอรี OldPictures และ Folder-1-FilePNG และสำเนาโฟลเดอร์-2-ไฟล์.PNG จะไม่ซ้ำกับโฟลเดอร์รูปภาพต้นฉบับ

วิธีนี้ใช้ได้ผลดีใน Mac OS X แต่เป็นคำสั่งยูนิกซ์ทั่วไป ดังนั้นคุณควรพบว่ามันใช้งานได้ในลินุกซ์และรุ่นอื่นๆ ด้วย หากคุณพบปัญหาความเข้ากันได้ หรือพบว่าคำสั่งนี้ซับซ้อนโดยไม่จำเป็น ให้ลองใช้ diff เพื่อใช้งานฟังก์ชันเดียวกัน

เคล็ดลับดีๆ ที่พบโดย @climagic บน Twitter, @osxdaily ก็อยู่ที่นั่นเช่นกัน!

เปรียบเทียบเนื้อหาของสองไดเร็กทอรีจากบรรทัดคำสั่ง