So extrahieren Sie mithilfe regulärer Ausdrücke reine Dateinamen aus einer Liste von Dateipfaden

So extrahieren Sie mithilfe regulärer Ausdrücke reine Dateinamen aus einer Liste von Dateipfaden

Mein Archivmanager scheint also beim Extrahieren einer Tar.xz-Datei die Verzeichnishierarchie nicht beibehalten zu haben. Jetzt ist mein Download-Ordner unordentlich und voller Dateien, die nicht an den richtigen Stellen liegen.

Ich möchte nur die Dateien löschen, die ursprünglich im Archiv waren. Dazu versuche ich, die Enden der einzelnen Dateipfade aus der Ausgabe abzugleichen tar tf file.tar.xzund die zugehörigen Dateien zu löschen.

Wenn die Eingabe beispielsweise lautet:

tor-browser_en-US/Browser/firefox
tor-browser_en-US/Browser/firefox.real
tor-browser_en-US/Browser/fonts/
tor-browser_en-US/Browser/fonts/Arimo-Bold.ttf

Ich möchte folgende Ausgabe:

firefox
firefox.real
Arimo-Bold.ttf

damit ich sie löschen kann.

Ich habe versucht, dies mit zu erreichen, sed 's/.*\/([^\/]+)$/\1/'aber dabei tritt der Fehler auf sed: -e expression #1, char 19: invalid reference \1 on 's' command's RHSund ich bin nicht sicher, was ich sonst versuchen soll.

Antwort1

sed '/\/$/d; s|.*/||'

/\/$/dEntfernt alle Zeilen mit einem abschließenden /. s|.*/||Entfernt alles vor der letzten /(sofern vorhanden) und dem /selbst.

verwandte Informationen