linux怎么删除文件尾的$,Linux中的basename命令用法:多个输入、删除结尾的后缀、示例...

basename是一个命令行实用程序,可从给定的文件名中删除目录和后缀。本文讲解Linux操作系统中的basename命令用法,包括介绍多个输入、删除结尾后缀的方法和示例应用。

ed096f59476e350350035d1d813b3f2c.png

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

示例应用

以下示例显示了如何在bash for循环中使用basename命令,通过将文件扩展名从“.jpeg”替换为“.jpg”来重命名当前目录中所有以“.jpeg”结尾的文件:

for file in *.jpeg; do

mv -- "$file" "$(basename $file .jpeg).jpg"

done

如果您使用bash作为shell程序,而不是调用基本名称,则可以使用Shell Parameter Expansion去除结尾的扩展名。

cf00c58e657375d0a4101fc54ddb50a9.png

结论

basename命令从名称中删除所有前导目录和后缀,且在用法上非常的简单。

相关主题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值