basename
ist ein Befehlszeilenprogramm, das Verzeichnisse und nachgestellte Suffixe von gegebenen Dateinamen entfernt.
Verwenden des basename
Befehl #
Der basename
Der Befehl unterstützt zwei Syntaxformate:
basename NAME [SUFFIX]
basename OPTION... NAME...
basename
nimmt einen Dateinamen und gibt die letzte Komponente des Dateinamens aus. Optional kann es auch alle nachgestellten Suffixe entfernen. Es ist ein einfacher Befehl, der nur wenige Optionen akzeptiert.
Das einfachste Beispiel ist die Ausgabe des Dateinamens mit entfernten führenden Verzeichnissen:
basename /etc/passwd
Die Ausgabe enthält den Dateinamen:
passwd
Der basename
entfernt alle nachgestellten /
Zeichen:
basename /usr/local/
basename /usr/local
Beide Befehle erzeugen dieselbe Ausgabe:
local
local
Standardmäßig endet jede Ausgabezeile mit einem Zeilenumbruchzeichen. Beenden Sie die Zeilen mit NUL
verwenden Sie das -z
(--zero
)-Option.
Mehrere Eingänge #
Der basename
Der Befehl kann mehrere Namen als Argumente akzeptieren. Rufen Sie dazu den Befehl mit dem -a
auf (--multiple
) Option, gefolgt von der durch Leerzeichen getrennten Liste der Dateien.
Zum Beispiel, um die Dateinamen von /etc/passwd
zu erhalten und /etc/shadow
Sie würden Folgendes ausführen:
basename -a /etc/passwd /etc/shadow
passwd
shadow
Entfernen eines nachgestellten Suffix #
Um ein nachgestelltes Suffix aus dem Dateinamen zu entfernen, übergeben Sie das Suffix als zweites Argument:
basename /etc/hostname name
host
Im Allgemeinen wird diese Funktion verwendet, um Dateierweiterungen zu entfernen:
basename /etc/sysctl.conf .conf
sysctl
Eine andere Möglichkeit, ein nachgestelltes Suffix zu entfernen, besteht darin, das Suffix mit dem -s
anzugeben (--suffix=SUFFIX
) Option:
basename -s .conf /etc/sysctl.conf
sysctl
Mit dieser Syntaxform können Sie jedes nachgestellte Suffix von mehreren Namen entfernen:
basename -a -s .conf /etc/sysctl.conf /etc/sudo.conf
sysctl
sudo
Beispiel #
Das folgende Beispiel zeigt, wie der basename
verwendet wird Befehl innerhalb einer Bash for
Schleife, um alle Dateien mit der Endung „.jpeg“ im aktuellen Verzeichnis umzubenennen, indem die Dateierweiterung von „.jpeg“ in „.jpg“ ersetzt wird:
for file in *.jpeg; do
mv -- "$file" "$(basename $file .jpeg).jpg"
done
Wenn Sie bash als Shell verwenden, statt basename
aufzurufen , können Sie die abschließende Erweiterung mithilfe der Shell-Parametererweiterung entfernen.
Schlussfolgerung #
Der basename
Der Befehl entfernt alle führenden Verzeichnisse und abschließenden Suffixe aus dem Namen.
Wenn Sie Fragen oder Feedback haben, können Sie gerne einen Kommentar hinterlassen.