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
命令从名称中删除所有前导目录和后缀。
如果您有任何疑问或反馈,请随时发表评论。
基本名称终端