Wenn Sie sich in einer Linux-ähnlichen Umgebung befinden, können Sie das basename
Dienstprogramm verwenden:
basename $(<your_file)
Ich habe eine Textdatei mit der folgenden Zeile:
/u/tux/abc/spool/frtbla_mcdetc_0000149099_20101126135009990_1.tif
Ich möchte extrahieren frtbla_mcdetc_0000149099_20101126135009990_1.tif
; das Wort nach dem letzten Schrägstrich ( /
).
Wenn Sie sich in einer Linux-ähnlichen Umgebung befinden, können Sie das basename
Dienstprogramm verwenden:
basename $(<your_file)
Verwenden Sie diesen Befehl
cat text_file_name | cut -d '/' -f 6
Wenn Sie das genaue Format der Verzeichnisstruktur kennen und sich nicht ändern, können Sie Folgendes verwenden cut
:
$ cut -f6 -d '/' file.txt
Hier werden mit cut die Verzeichnisseparatoren als Trennzeichen behandelt und das sechste extrahiert.
Wenn Sie stattdessen nur den letzten Teil einer Zeile kennen, aber die Verzeichnisstruktur nicht kennen, können Sie auch Folgendes verwenden rev
:
$ rev file.txt | cut -f1 -d '/' | rev
Hier wird die Datei umgekehrt und das erste Feld wird extrahiert, bevor es wieder umgekehrt wird.
Folgendes gilt für alle Zeichenfolgen in einer Shell, nicht nur für Dateinamen, und ist weitaus einfacher als das Ausschneiden, da Sie nicht wissen müssen, wie viele Felder vor dem gewünschten Feld vorhanden sind:
$ foo=/path/to/file/split/by/slashes.txt $ echo $ slashes.txt
Hierbei wird der 'gierige Schnitt' verwendet, dh alles bis zum letzten '/' wie hier beschrieben abschneiden:
https://stackoverflow.com/questions/3162385/how-to-split-a-string-in-shell-and-get-the-last-field
$
Ich weiß nicht, was die Standardshell in Aix ist, aber sie bash
ist verfügbar und unterstützt die bearbeitete Erweiterung von Variablen.
Wenn sich Ihr vollständiger Name in der Variablen befindet FileName
, $
wird der Name mit allen führenden Zeichen bis zum letzten Zeichen angezeigt /
. hingegen $
löscht auf den ersten bis /
, während $
Löschungen Zeichen aus dem letzten nachlauf /
(dh dem Verzeichnispfad).
Wenn Sie die Dateinamen durch einen find
Befehl generieren, benötigen Sie einen Befehl wie:
find ... | while read FileName; do echo $; done
Wenn in einer Textdatei:
while read FileName; do echo $; done < FileList.txt
Ersetzen Sie den echo
Befehl durch die Verarbeitung, die Sie mit dem Namen ausführen müssen.