basename是一个命令行中实用的小工具,可从给定的文件名中删除目录和后缀。
系统环境
Centos7
如何使用basename命令
在Centos7系统中,已经默认安装了basename命令了,该命令包含在coreutils安装包里。
basename有两种语法:
basenameNAME[SUFFIX]
basenameOPTION...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/hostnamename
host
另一种方法:
[root@localhost~]#basename-sname/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@localhosttest]#vimconvert.sh
#!/bin/bash
forfilein*.jpg
do
mv"$file""$(basename$file.jpg).jpeg"
done
<以上代码可复制粘贴,可往左滑>图片
总 结
basename命令的介绍到此为止,希望对你有帮助!
关键词: basename命令