Linux中的基本名稱命令

basename 是一個命令行實用程序,可從給定的文件名中刪除目錄和後綴。

使用 basename 命令#

basename 命令支持兩種語法格式:

basename NAME [SUFFIX]
basename OPTION... NAME...

basename 接受文件名並打印文件名的最後一部分。 (可選)它也可以刪除任何結尾的後綴。 這是一個簡單的命令,僅接受一些選項。

最基本的示例是打印除去前導目錄的文件名:

basename /etc/passwd

輸出將包含文件名:

passwd

basename 命令刪除任何結尾 / 字符:

basename /usr/local/basename /usr/local

這兩個命令將產生相同的輸出:

local
local

默認情況下,每條輸出行以換行符結尾。 以結束行 NUL, 使用 -z--zero) 選項。

多個輸入

basename 命令可以接受多個名稱作為參數。 為此,請使用 -a--multiple)選項,然後是用空格分隔的文件列表。

例如,獲取文件名 /etc/passwd/etc/shadow 您將運行:

basename -a /etc/passwd /etc/shadow
passwd
shadow

刪除結尾的後綴

要從文件名中刪除任何結尾的後綴,請將後綴作為第二個參數傳遞:

basename /etc/hostname name
name

通常,此功能用於刪除文件擴展名:

basename /etc/sysctl.conf .conf
sysctl

刪除尾隨後綴的另一種方法是用 -s--suffix=SUFFIX) 選項:

basename -s .conf /etc/sysctl.conf
sysctl

此語法格式使您可以從多個名稱中刪除任何結尾的後綴:

basename -a -s .conf /etc/sysctl.conf /etc/sudo.conf
sysctl
sudo

例子#

以下示例顯示了如何使用 basename bash中的命令 for 通過將文件擴展名從“ .jpeg”替換為“ .jpg”,循環重命名當前目錄中所有以“ .jpeg”結尾的文件:

for file in *.jpeg; do
    mv -- "$file" "$(basename $file .jpeg).jpg"
done

如果您使用bash作為外殼,而不是調用 basename,您可以使用Shell Parameter Expansion刪除結尾的擴展名。

結論#

basename 命令從名稱中刪除所有前導目錄和後綴。

如果您有任何疑問或反饋,請隨時發表評論。

基本名稱終端

Sidebar