วิธีค้นหา (และลบ) ไฟล์ที่ซ้ำกัน


125

ฉันมีคอลเล็กชั่นเพลงมากมายและมีบางอย่างซ้ำซ้อน มีวิธีการค้นหาไฟล์ซ้ำกันหรือไม่ อย่างน้อยโดยทำการแฮชและดูว่าสองไฟล์มีแฮชเดียวกันหรือไม่

คะแนนโบนัสสำหรับการค้นหาไฟล์ที่มีชื่อเดียวกันนอกเหนือจากส่วนขยาย - ฉันคิดว่าฉันมีบางเพลงที่มีทั้งรูปแบบ mp3 และ ogg

ฉันดีใจที่ใช้บรรทัดคำสั่งหากเป็นวิธีที่ง่ายที่สุด

คำตอบ:


138

ฉันใช้fdupesสิ่งนี้ มันเป็นโปรแกรม commandline sudo apt install fdupesที่สามารถติดตั้งได้จากที่เก็บด้วย คุณสามารถโทรหามันได้fdupes -r /dir/ect/oryและมันจะพิมพ์รายการของการหลอก fdupes ยังมีโฮมเพจที่ง่ายและบทความ Wikipediaซึ่งมีรายการโปรแกรมเพิ่มเติม


7
นอกจากนี้ยังมีตัวเลือก "-d" ที่ให้คุณเลือกสำเนาที่คุณต้องการเก็บไว้และลบสำเนาอื่น (หรือคุณสามารถเก็บสำเนาทั้งหมดหากคุณต้องการ)
Matthew Crumley

ฉันสามารถใช้ตัวเลือก -d เพื่อแก้ไขปัญหาของฉันที่นี่
จอห์น McKean พรูอิท

เป็นไปได้หรือไม่ที่ fdupes แสดงรายการโฟลเดอร์ซ้ำกันแทนที่จะเป็นไฟล์ซ้ำกัน?
Anderson Green

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

5
fdupes -r . -d -Nควรบันทึกอินสแตนซ์แรกและลบทั้งสอง ฉันเพิ่งล้างโฟลเดอร์เดียวโดยใช้การfdupes . -d -Nเรียกซ้ำ
Simon B

61

FSlintมี GUI และคุณสมบัติอื่น ๆ คำอธิบายของอัลกอริทึมการตรวจสอบซ้ำจากคำถามที่พบบ่อย:

1. exclude files with unique lengths
2. handle files that are hardlinked to each other
3. exclude files with unique md5(first_4k(file))
4. exclude files with unique md5(whole file)
5. exclude files with unique sha1(whole file) (in case of md5 collisions).

FSlint ติดตั้ง fslint


12
ขอบคุณ โปรดทราบว่าชื่อคำสั่งคือ "fslint-gui" และเครื่องมือบรรทัดคำสั่งไม่ได้อยู่ใน $ PATH โดยค่าเริ่มต้น - อยู่ใน / usr / share / fslint / fslint ฉันสับสนเมื่อฉันไม่ได้รับความช่วยเหลือเกี่ยวกับแพคเกจที่มันใช้เพียงแค่เรียกใช้ fslint (ผ่าน / usr / lib / command-not-found)
nealmcb

เป็นสิ่งที่จำเป็นจริงๆ
Tebe

1
@nealmcb ถ้าใช้sudo apt-get install fslintติดตั้งในขณะนี้ไม่นำเข้ามาในเส้นทางและเพื่อให้สามารถทำงานได้จากทุกที่โดยเพียงแค่พิมพ์fslint-gui fslint-guiคุณสามารถค้นหาว่าfslint-guiชีวิตอยู่ที่ไหนด้วยการพิมพ์which fslint-gui(ดูเหมือนว่าสคริปต์ Python)
user29020

55

รายการprograms/scripts/bash-solutionsที่สามารถค้นหารายการที่ซ้ำกันและทำงานภายใต้nix:

  1. dupedit : เปรียบเทียบไฟล์หลายไฟล์พร้อมกันโดยไม่มีการตรวจสอบ หลีกเลี่ยงการเปรียบเทียบไฟล์กับตัวเองเมื่อหลายพา ธ ชี้ไปที่ไฟล์เดียวกัน
  2. dupmerge : ทำงานบนแพลตฟอร์มต่าง ๆ (Win32 / 64 กับ Cygwin, * ระวัง, Linux ฯลฯ )
  3. dupseek : Perl พร้อมอัลกอริทึมที่ปรับให้เหมาะสมเพื่อลดการอ่าน
  4. fdf : Perl / c ตามและทำงานในแพลตฟอร์มส่วนใหญ่ (Win32, * ระวังและอื่น ๆ อาจ) ใช้ MD5, SHA1 และอัลกอริทึมการตรวจสอบอื่น ๆ
  5. freedups : เชลล์สคริปต์ที่ค้นหาไดเรกทอรีที่คุณระบุ เมื่อพบไฟล์ที่เหมือนกันสองไฟล์มันจะทำการเชื่อมโยงเข้าด้วยกันอย่างยากลำบาก ตอนนี้ไฟล์สองไฟล์ขึ้นไปยังคงอยู่ในไดเรกทอรีที่เกี่ยวข้อง แต่มีเพียงหนึ่งสำเนาของข้อมูลที่เก็บไว้ในดิสก์ รายการไดเรกทอรีทั้งสองชี้ไปที่บล็อกข้อมูลเดียวกัน
  6. fslint : มีอินเตอร์เฟสบรรทัดคำสั่งและ GUI
  7. liten : เครื่องมือบรรทัดคำสั่งการขจัดความซ้ำซ้อนของ Python และไลบรารี่โดยใช้การตรวจสอบ md5 และอัลกอริธึมเปรียบเทียบไบต์แบบใหม่ (Linux, Mac OS X, * ระวัง, Windows)
  8. liten2 : การเขียน Liten ต้นฉบับใหม่ยังคงเป็นเครื่องมือบรรทัดคำสั่ง แต่มีโหมดการโต้ตอบที่เร็วขึ้นโดยใช้การตรวจสอบ SHA-1 (Linux, Mac OS X, * nix)
  9. rdfind : หนึ่งในไม่กี่อันดับที่ซ้ำกันตามลำดับของพารามิเตอร์อินพุต (ไดเรกทอรีที่จะสแกน) เพื่อที่จะไม่ลบใน "ต้นฉบับ / รู้จักกันดี" แหล่งที่มา (ถ้ามีหลายไดเรกทอรี) ใช้ MD5 หรือ SHA1
  10. rmlint : เครื่องมือค้นหาอย่างรวดเร็วพร้อมอินเตอร์เฟสบรรทัดคำสั่งและตัวเลือกมากมายในการค้นหาผ้าสำลีอื่น ๆ ด้วย (ใช้ MD5)
  11. ua : เครื่องมือบรรทัดคำสั่ง Unix / Linux ออกแบบมาเพื่อทำงานกับ find (และอื่น ๆ )
  12. findrepe : เครื่องมือบรรทัดคำสั่งที่ใช้ Java ฟรีซึ่งออกแบบมาเพื่อการค้นหาไฟล์ที่ซ้ำซ้อนอย่างมีประสิทธิภาพสามารถค้นหาภายใน zips และ jars (GNU / Linux, Mac OS X, * nix, Windows)
  13. fdupe : สคริปต์ขนาดเล็กเขียนด้วย Perl ทำงานได้อย่างรวดเร็วและมีประสิทธิภาพ 1
  14. ssdeep : ระบุไฟล์ที่เกือบเหมือนกันโดยใช้การเรียกบริบทบริบททริกเกอร์

4
โปรแกรมเหล่านี้สามารถค้นหาโฟลเดอร์ที่ซ้ำกัน (ไม่ใช่แค่ไฟล์ที่ซ้ำกันหรือไม่)
Anderson Green

3
@AndersonGreen rmlintสามารถค้นหา dirs ซ้ำกันได้ rmlint -T dd
oligofren

สำหรับ Ubuntu อีกวิธีคือเปิดไฟล์ค้นหา (control-f) สำหรับนามสกุลที่กำหนด (เช่น. mp3) แล้วเรียงลำดับตามชื่อไฟล์ วิธีนี้จะช่วยให้สามารถลบรายการที่ซ้ำกันด้วยมือและในขณะเดียวกันก็แสดงตำแหน่งของรายการที่ซ้ำกัน
axd

6

หากงานการทำซ้ำของคุณเกี่ยวข้องกับเพลงอันดับแรกให้รันแอปพลิเคชันpicardเพื่อระบุและติดแท็กเพลงของคุณอย่างถูกต้อง (เพื่อให้คุณค้นหาไฟล์. mp3 / .ogg ที่ซ้ำกันได้แม้ว่าชื่อจะไม่ถูกต้อง) โปรดทราบว่า picard ยังมีอยู่ในแพ็คเกจของ Ubuntu ด้วย

ทำตามmusicip_puidแท็กคุณสามารถค้นหาเพลงที่ซ้ำกันทั้งหมดของคุณได้อย่างง่ายดาย


4

สคริปต์ที่จะทำงานนี้ก็คือrmdupe จากหน้าของผู้เขียน:

rmdupe ใช้คำสั่ง linux มาตรฐานเพื่อค้นหาภายในโฟลเดอร์ที่ระบุสำหรับไฟล์ซ้ำโดยไม่คำนึงถึงชื่อไฟล์หรือนามสกุล ก่อนที่ผู้สมัครที่ซ้ำกันจะถูกลบพวกเขาจะถูกเปรียบเทียบไบต์ต่อไบต์ rmdupe ยังสามารถตรวจสอบรายการซ้ำกับโฟลเดอร์อ้างอิงอย่างน้อยหนึ่งโฟลเดอร์สามารถลบไฟล์ขยะแทนที่จะลบทิ้งอนุญาตให้ใช้คำสั่งลบแบบกำหนดเองและสามารถ จำกัด การค้นหาเฉพาะไฟล์ที่มีขนาดที่กำหนด rmdupe รวมถึงโหมดการจำลองซึ่งรายงานสิ่งที่จะทำสำหรับคำสั่งที่กำหนดโดยไม่ต้องลบไฟล์ใด ๆ



2

สำหรับการระบุตัวตนซ้ำซ้อนและการลบเพลงที่เกี่ยวข้องกับ Picard และ Jaikoz โดยhttp://musicbrainz.org/เป็นทางออกที่ดีที่สุด Jaikoz ฉันเชื่อว่าแท็กเพลงของคุณโดยอัตโนมัติตามข้อมูลของไฟล์เพลง คุณไม่จำเป็นต้องใช้ชื่อเพลงเพื่อระบุเพลงและกำหนดข้อมูลเมตาทั้งหมดให้กับมัน แม้ว่าเวอร์ชั่นฟรีสามารถติดแท็กเพลงได้ในจำนวน จำกัด ในการใช้งานครั้งเดียว แต่คุณสามารถเรียกใช้งานได้หลายครั้งตามที่คุณต้องการ


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