basename是一个命令行实用程序,可从给定的文件名中删除目录和后缀。本文讲解Linux操作系统中的basename命令用法,包括介绍多个输入、删除结尾后缀的方法和示例应用。
basename命令用法 basename命令支持两种语法格式,如下: basename NAME [SUFFIX] basename OPTION... NAME... basename使用文件名并打印文件名的最后一部分,它也可以删除任何结尾的后缀,这是一个简单的命令,仅接受一些选项。 最基本的示例是打印除去前导目录的文件名: basename /etc/passwd 参考:带你了解Linux操作系统的/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
示例应用 以下示例显示了如何在bash for循环中使用basename命令,通过将文件扩展名从“.jpeg”替换为“.jpg”来重命名当前目录中所有以“.jpeg”结尾的文件: for file in *.jpeg; do mv -- "$file" "$(basename $file .jpeg).jpg" done 如果您使用bash作为shell程序,而不是调用基本名称,则可以使用Shell Parameter Expansion去除结尾的扩展名。
结论 basename命令从名称中删除所有前导目录和后缀,且在用法上非常的简单。
相关主题 |