Alat Linux untuk menemukan file duplikat?

13

Saya memiliki satu set file teks yang besar dan terus bertambah, yang semuanya cukup kecil (kurang dari 100 byte). Saya ingin membedakan setiap pasangan file dan mencatat yang merupakan duplikat. Saya bisa menulis skrip Python untuk melakukan ini, tapi saya bertanya-tanya apakah ada alat baris perintah Linux yang ada (atau mungkin kombinasi alat sederhana) yang akan melakukan ini?

Pembaruan (sebagai tanggapan terhadap komentar mfinni ): File-file tersebut semuanya dalam satu direktori, sehingga mereka semua memiliki nama file yang berbeda. (Tapi mereka semua memiliki ekstensi nama file yang sama, sehingga memudahkan untuk memilih semuanya dengan wildcard.)

Daryl Spitzer
sumber
Saya berasumsi bahwa nama file bukan duplikat, hanya isinya?
mfinni
pixelbeat.org/fslint jika Anda mencari konten tautan di atas dapat membantu Anda melakukannya. :)
Rajat

Jawaban:

22

Ada fdupes . Tapi saya biasanya menggunakan kombinasifind . -type f -exec md5sum '{}' \; | sort | uniq -d -w 36

Hubert Kario
sumber
1
Variasi ini berhasil untuk saya: find . -name "*.csv" | xargs md5sum | sort | uniq -D -w 34 (Saya menggunakan uniq -D, dan saya lebih suka xargs untuk menemukan -exec.)
Daryl Spitzer
+1 Saya tidak mengetahui fdupes, alat itu terlihat sangat berguna.
Zoredache
3
@Daryl: Menggunakan xargsseperti ini tidak berfungsi untuk nama file dengan kosong, -execnamun menggunakan tidak. Menggunakan -type fsebagai argumen tambahan untuk find(dapat digunakan bersama dengan -name) membatasi pencarian ke file.
fuenfundachtzig
+1 untuk fdupes, karena cepat untuk file biner yang besar, juga.
Bengt
Pada beberapa kesempatan yang jarang, saya memiliki xargs yang tidak berfungsi (macet setelah sejumlah file yang diproses) tetapi tidak menemukan -exec yang terbangun sepanjang waktu. @fuenfundachtzig, orang dapat menggunakan xargs -0 --delimiter = "\ n" untuk menangani file jenis ini.
ychaouche
6

Yah ada FSlint - yang belum pernah saya gunakan untuk kasus ini, tapi saya harus bisa mengatasinya: http://en.flossmanuals.net/FSlint/Introduction

pemalsu
sumber
+1 untuk FSlint. Antarmuka yang sangat intuitif dan opsi penyesuaian yang kuat.
Glutanimate
3

Anda hampir pasti tidak ingin membedakan setiap pasangan file. Anda mungkin ingin menggunakan sesuatu seperti md5sums untuk mendapatkan semua checksum dari semua file dan pipa itu ke beberapa alat lain yang hanya akan melaporkan kembali checksum duplikat.

Sakit kepala
sumber
2
Anda bisa mengurangi jumlah md5sums yang dihitung dengan hanya menghitung md5sums untuk file yang berukuran, yang mana ada lebih dari satu file dengan ukuran itu. Jadi untuk semua file dengan ukuran unik dalam byte, Anda tidak perlu md5sum, karena mereka tidak dapat duplikat apa pun.
tomsv