干货:Linux中使用 basename 命令实例

良许Linux

共 1830字,需浏览 4分钟

 ·

2021-01-09 16:01


basename是一个命令行中实用的小工具,可从给定的文件名中删除目录和后缀。


系统环境


Centos7


如何使用basename命令


在Centos7系统中,已经默认安装了basename命令了,该命令包含在coreutils安装包里。


basename有两种语法:

basename NAME [SUFFIX]
basename OPTION... NAME...

<以上代码可复制粘贴,可往左滑>

basename最后一部分。也可以删除任何结尾的后缀。这是一个简单的命令,最基本的是去掉文件名前面的目录并打印出来:

[root@localhost ~]# basename /etc/yum.repos.d/CentOS-Base.repo 
CentOS-Base.repo
<以上代码可复制粘贴,可往左滑>

basename命令默认删除所有结尾的/字符:

[root@localhost ~]# basename /usr/local/
local
[root@localhost ~]# basename /usr/local
local
<以上代码可复制粘贴,可往左滑>

默认情况下,每条输出行以换行符(\n)结尾。要以NUL结尾,请使用-z(--zero)选项。

[root@localhost ~]# basename -z /usr/local
local[root@localhost ~]#
<以上代码可复制粘贴,可往左滑>




basename接受多个文件


basename命令可以接受多个名称作为参数。可以使用-a(--multiple)选项,然后使用空格分隔文件列表。例如,要获取/etc/passwd和/etc/shadow的文件名,可以运行:

[root@localhost ~]# basename -a /etc/passwd /etc/shadow
passwd
shadow
<以上代码可复制粘贴,可往左滑>



删除指定结尾的后缀


要从文件名中删除任何结尾的后缀,请将后缀作为第二个参数传递:

[root@localhost ~]# basename /etc/hostname name
host
另一种方法:
[root@localhost ~]# basename -s name /etc/hostname 
host
<以上代码可复制粘贴,可往左滑>

上面例子中,指定name为后缀,可以看到输出结果中只显示/后面和name前面的内容了。


通常,此功能用于删除文件的扩展名:

[root@localhost ~]# basename -s .conf  /etc/httpd/conf/httpd.conf
httpd
或者
[root@localhost ~]# basename /etc/httpd/conf/httpd.conf .conf
httpd

<以上代码可复制粘贴,可往左滑>


下面例子,使用-a选项指定多个文件,-s选项指定后缀内容:

[root@localhost ~]# basename -a -s .conf /etc/sysctl.conf /etc/httpd/conf/httpd.conf 
sysctl
httpd
<以上代码可复制粘贴,可往左滑>

删除末尾后缀的另一种方法是使用-s(--suffix = SUFFIX)选项指定后缀。上面实例中以展现。




使用实例


以下示例显示了如何在bash脚本中使用for循环、mv命令和basename命令,通过将当前目录下面的图片文件,文件扩展名从“ .jpg”替换为“ .jpeg”:

[root@localhost test]# vim convert.sh 

#!/bin/bash
for file in *.jpg
do
  mv "$file" "$(basename $file .jpg).jpeg"
done

<以上代码可复制粘贴,可往左滑>




总    结


basename命令的介绍到此为止,希望对你有帮助!


良许个人微信


添加良许个人微信即送3套程序员必读资料


→ 精选技术资料共享

→ 高手如云交流社群





本公众号全部博文已整理成一个目录,请在公众号里回复「m」获取!

推荐阅读:

Oracle 常用运维命令整理

PyCharm vs VSCode,是时候改变你的 IDE 了!

微信QQ等主流应用上线国产系统UOS:界面曝光


5T技术资源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,单片机,树莓派,等等。在公众号内回复「1024」,即可免费获取!!


浏览 35
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报