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