Also überprüfe ich den md5
Hash meiner Dateien mit dieser Ausgabe:
657cf4512a77bf47c39a0482be8e41e0 ./dupes2.txt
657cf4512a77bf47c39a0482be8e41e0 ./dupes.txt
8d60a927ce0f411ec94ac26a4785f749 ./derpina.txt
15f63928b8a1d5337137c38b5d66eed3 ./foo.txt
8d60a927ce0f411ec94ac26a4785f749 ./derp.txt
Nach dem Ausführen find . -type f -exec md5sum '{}' ';' | uniq -w 33
, um die eindeutigen Hashes zu finden, erhalte ich jedoch Folgendes:
657cf4512a77bf47c39a0482be8e41e0 ./dupes2.txt
8d60a927ce0f411ec94ac26a4785f749 ./derpina.txt
15f63928b8a1d5337137c38b5d66eed3 ./foo.txt
8d60a927ce0f411ec94ac26a4785f749 ./derp.txt
Nur entweder aus meinem Verständnis, derpina.txt
oder derp.txt
sollte zeigen , bis da ihre Hashes gleich sind. Vermisse ich etwas? Kann mir jemand erklären, warum es so ausgibt?
command-line
bash
uniq
user2127726
quelle
quelle
Antworten:
Sie müssen
sort
vor verwendenuniq
:uniq
Entfernt nur wiederholte Zeilen. Die Zeilen, die nach Wiederholungen suchen, werden nicht neu geordnet.sort
macht diesen Teil.Dies ist dokumentiert in
man uniq
:quelle
uniq
solltesort -u
in allen Systemen standardmäßig als Alias verwendet werden. Wenn überhaupt, muss es immer "sortiert" werden, damit es richtig funktioniert.uniq
hat viele Funktionen nicht mit zur Verfügungsort -u
. Es gibt auch Fälle, in denen manuniq
ohne verwenden möchtesort
.Die Eingabe für
uniq
muss sortiert werden. Also für den Beispielfall,würde funktionieren. Das
-w
(--check-chars=N
) macht die Zeilen nur in Bezug auf die erste Spalte eindeutig; Diese Option funktioniert in diesem Fall. Die Möglichkeiten, die relevanten Teile der Leitung zu spezifizieren,uniq
sind jedoch begrenzt. Beispielsweise gibt es keine Optionen zum Festlegen der Arbeit an einigen Spalten 3 und 5, wobei Spalte 4 ignoriert wird.Der Befehl
sort
verfügt über eine Option für eindeutige Ausgabezeilen selbst, und die Zeilen sind in Bezug auf die zum Sortieren verwendeten Schlüssel eindeutig. Dies bedeutet, dass wir die leistungsstarke Schlüsselsyntax von verwenden könnensort
, um zu definieren, in welchem Teil die Zeilen eindeutig sein sollen.Für das Beispiel
gibt genau das gleiche Ergebnis, aber das
sort
Teil ist flexibler für andere Zwecke.quelle
Oder Sie könnten killdupes installieren, mein Programm, um jedes letzte effing Duplikat zu zerstören, das es gibt!
https://github.com/batchmcnulty/killdupes
:-)
quelle