Jadi saya memeriksa md5
hash file saya dengan ini sebagai output saya:
657cf4512a77bf47c39a0482be8e41e0 ./dupes2.txt
657cf4512a77bf47c39a0482be8e41e0 ./dupes.txt
8d60a927ce0f411ec94ac26a4785f749 ./derpina.txt
15f63928b8a1d5337137c38b5d66eed3 ./foo.txt
8d60a927ce0f411ec94ac26a4785f749 ./derp.txt
Namun, setelah berlari find . -type f -exec md5sum '{}' ';' | uniq -w 33
untuk menemukan hash unik saya mendapatkan ini:
657cf4512a77bf47c39a0482be8e41e0 ./dupes2.txt
8d60a927ce0f411ec94ac26a4785f749 ./derpina.txt
15f63928b8a1d5337137c38b5d66eed3 ./foo.txt
8d60a927ce0f411ec94ac26a4785f749 ./derp.txt
Dari pemahaman saya, hanya satu dari salah satu derpina.txt
atau derp.txt
harus muncul karena hash mereka sama. Apakah saya melewatkan sesuatu? Adakah yang bisa menjelaskan mengapa ini menghasilkan seperti ini?
command-line
bash
uniq
pengguna2127726
sumber
sumber
Jawaban:
Anda perlu menggunakan
sort
sebelumuniq
:uniq
hanya menghilangkan garis yang berulang. Itu tidak memesan ulang garis mencari pengulangan.sort
apakah bagian itu.Ini didokumentasikan dalam
man uniq
:sumber
uniq
harus alias sebagaisort -u
default di semua sistem. Jika sama sekali selalu perlu "mengurutkan" agar berfungsi dengan benar.uniq
memiliki banyak fitur yang tidak tersediasort -u
. Juga, ada beberapa kasus di mana seseorang ingin menggunakannyauniq
tanpasort
.Input untuk
uniq
perlu disortir. Jadi untuk contoh kasus,akan bekerja. The
-w
(--check-chars=N
) membuat garis-garis unik hanya pada kolom pertama; Opsi ini berfungsi untuk kasus ini. tetapi kemungkinan untuk menentukan bagian yang relevan dari garis untukuniq
terbatas. Misalnya, tidak ada opsi untuk menentukan bekerja pada beberapa kolom 3 dan 5, mengabaikan kolom 4.Perintah
sort
memiliki opsi untuk jalur output unik itu sendiri, dan jalur tersebut unik terkait dengan kunci yang digunakan untuk mengurutkan. Ini berarti kita dapat menggunakan sintaks kunci yang kuatsort
untuk mendefinisikan tentang bagian mana yang harus uniq.Sebagai contoh,
memberikan hasil yang sama, tetapi
sort
bagian ini lebih fleksibel untuk kegunaan lain.sumber
Atau Anda dapat menginstal killdupes, program saya untuk menghancurkan setiap duplikat terakhir yang ada!
https://github.com/batchmcnulty/killdupes
:-)
sumber