Linux中的basename命令
basename
是一个命令行程序,可从给定的文件名中删除目录和后缀。
使用basename
命令
basename
命令支持两种语法格式:
basename NAME [SUFFIX]basename OPTION... NAME...
basename
取文件名并打印文件名的最后一部分。 (可选)它也可以删除任何结尾的后缀。 这是一个简单的命令,仅接受一些选项。
最基本的示例是在删除前导目录的情况下打印文件名:
basename /etc/passwd
输出仅包含文件名:
passwd
basename
命令删除所有后缀/
字符:
basename /usr/local/basename /usr/local
这两个命令将产生相同的输出:
locallocal
默认情况下,每条输出行以换行符结尾。 要以NUL
结尾的行,请使用-z
(--zero
)选项。
多个输入
basename
命令可以接受多个名称作为参数。 为此,请使用-a
(--multiple
)选项调用命令,然后使用空格分隔文件列表。
例如,要获取/etc/passwd
和/etc/shadow
的文件名,应运行:
basename -a /etc/passwd /etc/shadow
passwdshadow
删除结尾的后缀
要从文件名中删除任何后缀,请将后缀作为第二个参数传递:
basename /etc/hostname name
host
通常,此功能用于删除文件扩展名:
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
sysctlsudo
范例
以下示例显示如何在bash for
循环中使用basename
命令来替换当前目录中以“ .jpeg”结尾的所有文件的重命名。 文件扩展名从“ .jpeg”到“ .jpg”:
for file in *.jpeg; do mv -- "$file" "$(basename $file .jpeg).jpg"
done
如果您将bash用作shell程序,而不是调用basename
,则可以使用 Shell Parameter Expansion 来剥离尾随扩展名。
结论
basename
命令从名称中删除任何前导目录和后缀。
如果您有任何问题或反馈,请随时发表评论。
以上是 Linux中的basename命令 的全部内容, 来源链接: utcz.com/z/507576.html