เครื่องมือ Linux เพื่อค้นหาไฟล์ที่ซ้ำกัน?


13

ฉันมีชุดไฟล์ข้อความขนาดใหญ่และกำลังเติบโตซึ่งค่อนข้างเล็ก (น้อยกว่า 100 ไบต์) ฉันต้องการกระจายไฟล์ที่เป็นไปได้แต่ละคู่และบันทึกสิ่งที่ซ้ำกัน ฉันสามารถเขียนสคริปต์ Python เพื่อทำสิ่งนี้ แต่ฉันสงสัยว่ามีเครื่องมือบรรทัดคำสั่ง Linux ที่มีอยู่ (หรืออาจจะเป็นชุดเครื่องมืออย่างง่าย) ที่จะทำเช่นนี้?

อัปเดต (เพื่อตอบสนองต่อความคิดเห็นmfinni ): ไฟล์ทั้งหมดอยู่ในไดเรกทอรีเดียวดังนั้นไฟล์ทั้งหมดจึงมีชื่อไฟล์ต่างกัน (แต่พวกเขาทั้งหมดมีนามสกุลไฟล์ร่วมกันทำให้ง่ายต่อการเลือกทั้งหมดด้วยสัญลักษณ์แทน)


ฉันสมมติว่าชื่อไฟล์ไม่ซ้ำกันมีเพียงเนื้อหาเท่านั้น?
mfinni

pixelbeat.org/fslintหากคุณกำลังมองหาลิงค์ด้านบนอาจช่วยคุณได้ :)
Rajat

คำตอบ:


22

มีเป็นfdupes แต่ฉันมักจะใช้การรวมกันของfind . -type f -exec md5sum '{}' \; | sort | uniq -d -w 36


1
รูปแบบนี้เหมาะสำหรับฉัน: find . -name "*.csv" | xargs md5sum | sort | uniq -D -w 34 (ฉันใช้ uniq -D และฉันชอบ xargs เพื่อค้นหา -exec)
Daryl Spitzer

+1 ฉันไม่รู้จัก fdupes เครื่องมือนั้นดูมีประโยชน์มาก
Zoredache

3
@Daryl: การใช้xargsวิธีนี้ใช้ไม่ได้กับชื่อไฟล์ที่มีช่องว่าง-execแต่ใช้อย่างไร การใช้-type fเป็นอาร์กิวเมนต์เพิ่มเติมเพื่อfind(สามารถใช้ร่วมกับ-name) จำกัด การค้นหาไฟล์
fuenfundachtzig

+1 สำหรับ fdupes เนื่องจากมันรวดเร็วสำหรับไฟล์ไบนารีขนาดใหญ่เช่นกัน
Bengt

ในบางโอกาสที่หายากฉันมี xargs ไม่ทำงาน (หยุดทำงานหลังจากไฟล์ประมวลผลจำนวนหนึ่ง) แต่ไม่พบ -exec ที่ตื่นตลอดเวลา @fuenfundachtzig สามารถใช้ xargs -0 --delimiter = "\ n" เพื่อจัดการไฟล์ประเภทนี้
ychaouche

6

มี FSlint - ซึ่งฉันไม่ได้ใช้สำหรับกรณีนี้โดยเฉพาะ แต่ฉันควรจะสามารถจัดการได้: http://en.flossmanuals.net/FSlint/Introduction


+1 สำหรับ FSlint อินเตอร์เฟซที่ใช้งานง่ายมากและตัวเลือกการปรับแต่งที่มีประสิทธิภาพ
Glutanimate

3

คุณแทบไม่ต้องการแยกไฟล์แต่ละคู่ คุณอาจต้องการใช้บางอย่างเช่น md5sums เพื่อรับเช็คซัมทั้งหมดของไฟล์และไพพ์ทั้งหมดที่เป็นเครื่องมืออื่นที่จะรายงานเช็คซัมซ้ำ


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