Cara menemukan (dan menghapus) file duplikat

125

Saya memiliki koleksi musik yang besar dan ada beberapa duplikat di sana. Apakah ada cara untuk menemukan file duplikat. Minimal dengan melakukan hash dan melihat apakah dua file memiliki hash yang sama.

Poin bonus untuk juga menemukan file dengan nama yang sama terlepas dari ekstensi - saya pikir saya punya beberapa lagu dengan versi format mp3 dan ogg.

Saya senang menggunakan baris perintah jika itu cara termudah.

Hamish Downer
sumber

Jawaban:

138

Saya gunakan fdupesuntuk ini. Ini adalah program commandline yang dapat diinstal dari repositori bersama sudo apt install fdupes. Anda dapat menyebutnya seperti fdupes -r /dir/ect/orydan itu akan mencetak daftar dupes. fdupes juga memiliki Beranda dan artikel Wikipedia , yang mencantumkan beberapa program lagi.

qbi
sumber
7
Ini juga memiliki opsi "-d" yang memungkinkan Anda memilih salinan mana yang ingin Anda simpan, dan menghapus yang lain (atau Anda dapat menyimpan semuanya jika Anda mau).
Matthew Crumley
Bagaimana saya bisa menggunakan opsi -d untuk memperbaiki masalah saya di sini
John McKean Pruitt
Apakah mungkin bagi fdupes untuk membuat daftar folder duplikat alih-alih file duplikat?
Anderson Green
2
Bisakah Anda menjelaskan secara lebih rinci cara menghapus semua duplikat (hanya menyisakan satu salinan setiap file) di pohon direktori rekursif? Saya ingin melakukan ini secara otomatis, yaitu, tanpa harus menentukan setiap kali file mana yang akan disimpan. Seharusnya hanya memilih salah satu duplikat.
becko
5
fdupes -r . -d -Nharus menyimpan instance pertama dan menghapus dupes. Saya baru saja berhasil membersihkan satu folder menggunakan fdupes . -d -Nnon-rekursif
Simon B
61

FSlint memiliki GUI dan beberapa fitur lainnya. Penjelasan tentang algoritma pemeriksaan rangkap dari FAQ mereka:

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 Instal fslint

Dominik
sumber
12
Terima kasih. Perhatikan bahwa nama perintah adalah "fslint-gui", dan alat-alat baris perintah tidak dalam $ PATH secara default - mereka berada di / usr / share / fslint / fslint. Saya bingung ketika saya tidak mendapatkan bantuan pada paket yang mana dengan hanya menjalankan fslint (via / usr / lib / command-not-found).
nealmcb
persis apa yang diperlukan
Tebe
1
@nealmcb Jika menggunakan sudo apt-get install fslint, instalasi saat ini dimasukkan fslint-guike jalur dan jadi saya bisa menjalankannya dari mana saja hanya dengan mengetik fslint-gui. Anda dapat menemukan tempat fslint-guitinggal dengan mengetik which fslint-gui(sepertinya skrip Python).
user29020
55

Daftar programs/scripts/bash-solutions, yang dapat menemukan duplikat dan dijalankan di bawah nix:

  1. dupedit : Membandingkan banyak file sekaligus tanpa checksumming. Hindari membandingkan file dengan dirinya sendiri ketika beberapa jalur menunjuk ke file yang sama.
  2. dupmerge : berjalan di berbagai platform (Win32 / 64 dengan Cygwin, * nix, Linux dll.)
  3. dupseek : Perl dengan algoritma yang dioptimalkan untuk mengurangi pembacaan.
  4. fdf : Perl / c berbasis dan berjalan di sebagian besar platform (Win32, * nix dan mungkin yang lain). Menggunakan MD5, SHA1 dan algoritma checksum lainnya
  5. freedups : shell script, yang mencari melalui direktori yang Anda tentukan. Ketika menemukan dua file yang identik, itu menghubungkan mereka bersama-sama. Sekarang dua atau lebih file masih ada di direktori masing-masing, tetapi hanya satu salinan data yang disimpan di disk; kedua entri direktori menunjuk ke blok data yang sama.
  6. fslint : memiliki antarmuka baris perintah dan GUI.
  7. liten : Alat baris perintah deduplikasi Pure Python, dan perpustakaan, menggunakan checksum md5 dan algoritma perbandingan byte baru. (Linux, Mac OS X, * nix, Windows)
  8. liten2 : Menulis ulang Liten asli, masih berupa alat baris perintah tetapi dengan mode interaktif yang lebih cepat menggunakan SHA-1 checksum (Linux, Mac OS X, * nix)
  9. rdfind : Salah satu dari sedikit yang memeringkat duplikat berdasarkan urutan parameter input (direktori untuk memindai) agar tidak menghapus dalam sumber "asli / terkenal" (jika beberapa direktori diberikan). Menggunakan MD5 atau SHA1.
  10. rmlint : Pencari cepat dengan antarmuka baris perintah dan banyak opsi untuk menemukan serat lainnya juga (menggunakan MD5)
  11. ua : Alat baris perintah Unix / Linux, dirancang untuk bekerja dengan find (dan sejenisnya).
  12. findrepe : alat baris perintah berbasis Java gratis yang dirancang untuk pencarian file duplikat yang efisien, dapat mencari di dalam ritsleting dan toples. (GNU / Linux, Mac OS X, * nix, Windows)
  13. fdupe : skrip kecil yang ditulis dalam Perl. Melakukan pekerjaannya dengan cepat dan efisien. 1
  14. ssdeep : mengidentifikasi file yang hampir identik menggunakan Context Triggered Piecewise Hashing
v2r
sumber
4
Apakah ada dari program ini yang dapat menemukan folder duplikat (bukan hanya file duplikat?)
Anderson Green
3
@AndersonGreen rmlintdapat menemukan direktori duplikat. rmlint -T dd
oligofren
untuk Ubuntu, cara lain adalah membuka File, cari (control-f) untuk ekstensi yang diberikan (misalnya .mp3), dan kemudian urutkan pada nama file; ini akan memungkinkan untuk menghapus duplikat dengan tangan, dan pada saat yang sama menunjukkan lokasi duplikat.
axd
6

Jika tugas deduplikasi Anda terkait dengan musik, pertama jalankan aplikasi picard untuk mengidentifikasi dan memberi tag musik Anda dengan benar (sehingga Anda menemukan duplikat file .mp3 / .ogg bahkan jika namanya tidak benar). Perhatikan bahwa picard juga tersedia sebagai paket Ubuntu.

Itu dilakukan, berdasarkan musicip_puidtag Anda dapat dengan mudah menemukan semua lagu duplikat Anda.

ΤΖΩΤΖΙΟΥ
sumber
4

Skrip lain yang melakukan pekerjaan ini adalah rmdupe . Dari halaman penulis:

rmdupe menggunakan perintah linux standar untuk mencari di dalam folder yang ditentukan untuk file duplikat, terlepas dari nama file atau ekstensi. Sebelum kandidat duplikat dihapus mereka dibandingkan byte-untuk-byte. rmdupe juga dapat memeriksa duplikat terhadap satu atau beberapa folder referensi, dapat membuang file alih-alih menghapusnya, memungkinkan perintah penghapusan kustom, dan dapat membatasi pencariannya ke file dengan ukuran tertentu. rmdupe termasuk mode simulasi yang melaporkan apa yang akan dilakukan untuk perintah yang diberikan tanpa benar-benar menghapus file apa pun.

girardengo
sumber
3

Sudahkah Anda mencoba

finddup

atau

finddup -l

Saya kira itu berfungsi dengan baik.

xerostomus
sumber
2

Untuk identifikasi dan penghapusan duplikat terkait Musik Picard dan Jaikoz oleh http://musicbrainz.org/ adalah solusi terbaik. Jaikoz Saya percaya secara otomatis menandai musik Anda berdasarkan data file lagu. Anda bahkan tidak perlu nama lagu untuk mengidentifikasi lagu dan menetapkan semua data meta untuk itu. Meskipun versi gratis hanya dapat menandai sejumlah lagu dalam sekali tayang, tetapi Anda dapat menjalankannya sebanyak yang Anda inginkan.

Yathi
sumber
2

Saya menggunakan komparator - sudo apt-get install komparator( Ubuntu 10.04+ ) - sebagai alat GUI untuk menemukan duplikat dalam mode manual.

N0rbert
sumber