Vergleichen von text Dateien, und löschen Duplikate (Linux-terminal-Befehle)
Angenommen ich habe zwei Verzeichnisse namens dir_one und dir_two. In jedem dieser Verzeichnisse habe ich eine text-Datei mit dem Namen data.txt. In anderen Worten, es sind zwei Dateien in zwei separate Verzeichnisse: /dir_one/data.txt und /dir_one/data.txt Trotz der ähnlichen Datei-Namen, die zwei text-Dateien, die möglicherweise oder möglicherweise nicht den gleichen Inhalt!
Was ich zu tun versuche, ist dies:
- Vergleichen Sie den Inhalt von text-Dateien: ./dir_one/data.txt und ./dir_one/data.txt
- Wenn die Inhalte identisch sind, löschen Sie eines der text-Dateien.
Ich eingegeben haben, müssen Sie den folgenden Befehl in terminal:
diff -qrs ./dir_one/data.txt ./dir_two/data.txt
und ich bekomme die folgende Meldung:
Files ./dir_one/data.txt ./dir_two/data.txt are identical.
Nun, dass ich weiß, dass die zwei Dateien sind identisch, ich kann die rm
Befehl zum entfernen einer von Ihnen. So weit, So gut. Allerdings...
Das problem ist, dass möchte ich automatisieren, um den Löschvorgang. Ich will nicht zu haben, um den rm
auf der Kommandozeile. Gibt es überhaupt eine Möglichkeit, dies zu tun - in ein Skript, zum Beispiel?
Ich würde auch gerne wissen, wie man vergleichen einer großen Menge von text-Dateien in einem Verzeichnis gegen eine große Menge von text-Dateien in einem anderen Verzeichnis. Nochmal für alle Dateien identisch sein, eines der Duplikate gelöscht werden sollen. Ist dies auch möglich?
Ich gefunden habe, die ähnliche Fragen, aber keine über die Automatisierung der Löschung der doppelten Dateien. Beachten Sie, dass ich mit ubuntu 12.04.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie fdupes.
Genießen!
diff
gibt exit-status 0, wenn die Dateien gleich sind, 1 wenn Sie sich unterscheiden, und 2 wenn ein Fehler aufgetreten ist. Sie können es benutzen, um zu entscheiden, ausführen der rm-Befehl-r
wird das Ergebnis null, wenn alle die Dateien gleich sind, und nicht null, wenn alle unterschiedlich sind.Hier ist ein Skript, das ich anfangs schrieb vor einiger Zeit und vor kurzem Poliert. Sollten Sie es aus dem Verzeichnis, das Sie wollen dedupliziert werden sollen. Es werden alle Duplikate in einem Verzeichnis außerhalb von "gereinigt" - Verzeichnis: