Więc sprawdzam md5
skrót moich plików za pomocą tego jako mojego wyjścia:
657cf4512a77bf47c39a0482be8e41e0 ./dupes2.txt
657cf4512a77bf47c39a0482be8e41e0 ./dupes.txt
8d60a927ce0f411ec94ac26a4785f749 ./derpina.txt
15f63928b8a1d5337137c38b5d66eed3 ./foo.txt
8d60a927ce0f411ec94ac26a4785f749 ./derp.txt
Jednak po uruchomieniu find . -type f -exec md5sum '{}' ';' | uniq -w 33
aby znaleźć unikalne skróty, otrzymuję to:
657cf4512a77bf47c39a0482be8e41e0 ./dupes2.txt
8d60a927ce0f411ec94ac26a4785f749 ./derpina.txt
15f63928b8a1d5337137c38b5d66eed3 ./foo.txt
8d60a927ce0f411ec94ac26a4785f749 ./derp.txt
Z mojego zrozumienia, albo tylko jedna derpina.txt
lub derp.txt
powinny być wyświetlane, ponieważ ich hashe są takie same. Czy coś brakuje? Czy ktoś może mnie oświecić, dlaczego tak to wygląda?
command-line
bash
uniq
użytkownik2127726
źródło
źródło
Odpowiedzi:
Musisz użyć
sort
przeduniq
:uniq
usuwa tylko powtarzające się linie. Nie porządkuje wierszy szukających powtórzeń.sort
robi tę część.Jest to udokumentowane w
man uniq
:źródło
uniq
powinien byćsort -u
domyślnie aliasowany we wszystkich systemach. Jeśli w ogóle zawsze potrzebuje „sortowania”, aby działał poprawnie.uniq
ma wiele funkcji niedostępnych zsort -u
. Są też przypadki, w których chce się używaćuniq
bezsort
.Dane wejściowe
uniq
muszą zostać posortowane. W tym przypadkupracowałbym.
-w
(--check-chars=N
) Pozwala linie unikalne wyłącznie w odniesieniu do pierwszej kolumnie; Ta opcja działa w tym przypadku. ale możliwości określenia odpowiednich części liniiuniq
są ograniczone. Na przykład nie ma opcji określających działanie na niektórych kolumnach 3 i 5, ignorując kolumnę 4.Polecenie
sort
ma opcję dla samych unikatowych linii wyjściowych, a linie są unikatowe w odniesieniu do kluczy używanych do sortowania. Oznacza to, że możemy skorzystać z potężnej składni klawiszy,sort
aby określić, w której części wiersze powinny być uniq.Na przykład
daje ten sam wynik, ale
sort
część jest bardziej elastyczna do innych zastosowań.źródło
Lub możesz zainstalować killdupes, mój program do niszczenia każdego ostatniego duplikatu!
https://github.com/batchmcnulty/killdupes
:-)
źródło