|
basename是一个命令行中实用的小工具,可从给定的文件名中删除目录和后缀。 系统环境 Centos7; k( i# W( O( u" k2 X5 E6 f " }5 V }# N3 I8 } 如何使用basename命令 在Centos7系统中,已经默认安装了basename命令了,该命令包含在coreutils安装包里。
basename有两种语法: basename OPTION... NAME... <以上代码可复制粘贴,可往左滑> basename最后一部分。也可以删除任何结尾的后缀。这是一个简单的命令,最基本的是去掉文件名前面的目录并打印出来: [root@localhost ~]# basename /etc/yum.repos.d/CentOS-Base.repo & O# Q' d5 H% ]! H# N5 W. v5 ZCentOS-Base.repo$ P' ?& j, `, [0 q* e$ b( D H. B* t <以上代码可复制粘贴,可往左滑> basename命令默认删除所有结尾的/字符: [root@localhost ~]# basename /usr/local/local [root@localhost ~]# basename /usr/local local <以上代码可复制粘贴,可往左滑> 默认情况下,每条输出行以换行符(\n)结尾。要以NUL结尾,请使用-z(--zero)选项。 [root@localhost ~]# basename -z /usr/locallocal[root@localhost ~]# <以上代码可复制粘贴,可往左滑>
) `* p H( q5 I5 b basename接受多个文件 basename命令可以接受多个名称作为参数。可以使用-a(--multiple)选项,然后使用空格分隔文件列表。例如,要获取/etc/passwd和/etc/shadow的文件名,可以运行: [root@localhost ~]# basename -a /etc/passwd /etc/shadow$ T! c& H! f9 d% ] m8 j$ o$ Y3 rpasswd1 [1 p; R. {# p, I5 \! s& e3 q shadow% v; I4 Q# l' x6 h1 U* u <以上代码可复制粘贴,可往左滑> - q2 \: D- y, `1 q5 h 删除指定结尾的后缀 要从文件名中删除任何结尾的后缀,请将后缀作为第二个参数传递: [root@localhost ~]# basename /etc/hostname name" w0 \/ H7 @: Q8 `8 h9 f( |host p3 T0 F4 b. \) Q. A! x$ ~ 另一种方法:6 n4 ^. K7 {( x1 m7 z7 p [root@localhost ~]# basename -s name /etc/hostname host) b% n4 M3 \. X8 o) G3 O <以上代码可复制粘贴,可往左滑> 上面例子中,指定name为后缀,可以看到输出结果中只显示/后面和name前面的内容了。
: `) \+ i# X3 ?9 D: T; I7 D [root@localhost ~]# basename -s .conf /etc/httpd/conf/httpd.conf" _/ F/ p7 b. E8 V a1 }通常,此功能用于删除文件的扩展名: httpd 或者 [root@localhost ~]# basename /etc/httpd/conf/httpd.conf .conf3 N- X5 I4 j1 q httpd. @- e8 |: t) U& x) w4 d2 O <以上代码可复制粘贴,可往左滑>3 T) s& h0 E* ?; z
0 @$ y0 c1 t% E% K. P [root@localhost ~]# basename -a -s .conf /etc/sysctl.conf /etc/httpd/conf/httpd.conf 下面例子,使用-a选项指定多个文件,-s选项指定后缀内容: sysctl9 r+ ]" d- u5 s5 ?: p- U- s6 s httpd6 F; J7 b/ F" U7 a( N- p" H/ M2 m <以上代码可复制粘贴,可往左滑> 删除末尾后缀的另一种方法是使用-s(--suffix = SUFFIX)选项指定后缀。上面实例中以展现。 , N- h; B( K& |8 f" v* D 使用实例 以下示例显示了如何在bash脚本中使用for循环、mv命令和basename命令,通过将当前目录下面的图片文件,文件扩展名从“ .jpg”替换为“ .jpeg”: [root@localhost test]# vim convert.sh " `9 f( x. s$ J! O+ S) N9 c #!/bin/bash! d; d' ^$ x& F: f& Z, C for file in *.jpg, }; n% u# B: I: q; l do mv "$file" "$(basename $file .jpg).jpeg" done <以上代码可复制粘贴,可往左滑>
3 O* p6 }- q$ T1 A 总 结 basename命令的介绍到此为止,希望对你有帮助! |
微信公众号
手机版