Ich habe gerade ein Archiv entpackt, das ein Durcheinander von Dateien in meinem aufgeräumten Verzeichnis erzeugt hat. Beispielsweise:
user@comp:~/tidy$ tar xvf myarchive.tar
file1
file2
dir1/
dir1/file1
dir1/subdir1/
dir1/subdir1/file1
dir2/
dir2/file1
...
Ich hatte erwartet, dass die TAR-Datei in einem einzigen Ordner (dh myarchive/
) organisiert wäre, aber es war nicht! Jetzt habe ich ungefähr 190 Dateien und Verzeichnisse, die digital in ein organisiertes Verzeichnis verschoben wurden. Diese Dateien müssen bereinigt werden.
Gibt es eine Möglichkeit, dies rückgängig zu machen und die Dateien und Verzeichnisse zu löschen, die aus diesem Archiv extrahiert wurden?
Vielen Dank für die hervorragenden Antworten unten. Zusammenfassend funktioniert Folgendes mit zwei Schritten: (1) Löschen von Dateien und (2) Löschen der leeren Verzeichnisstruktur in umgekehrter Reihenfolge (Löschen der äußeren Verzeichnisse zuerst):
tar tf myarchive.tar | xargs -d'\n' rm
tar tf myarchive.tar | tac | xargs -d'\n' rmdir
Noch sicherer ist es, eine Vorschau der Befehle anzuzeigen, indem Sie sie echo
nachher anhängen xargs
.
xargs
( tac
statt sort -r
nur Kosmetik), aber Sie akzeptieren die Antwort mit Prozessersetzung, die, wie Sie in den Kommentaren erklärt haben, nicht zu Ihnen passte? Geben Sie außerdem xargs -d'\n'
in Ihrem Beitrag den Schalter an, wenn Sie eine Zusammenfassung für zukünftige Benutzer erstellen möchten, damit diese nicht von Leerzeichen in Dateinamen gebissen werden.
-d'\n'
bis jetzt nie verstanden , und nach weiterer Analyse ist Ihre Antwort tatsächlich näher an dem, was ich verwendet habe.
-d'\n'
liegt in der Tatsache, dass, wenn Sie nicht sagen xargs
, Argumente in neue Zeilen aufzuteilen (was Sie einspeisen), sondern in Leerzeichen, dann eine Datei mit dem Name folder1/some file
wird als folder1/some
und gelesen name
.