Linux -- basename
basename用于获取路径中的文件名或路径名,还可以对末尾字符进行删除,即可从给定的文件名中删除目录和后缀。命令格式basename有两种语法,basename NAME [SUFFIX]basename OPTION... NAME...命令选项-a, --multiplesupport multiple arguments and treat each as a NAME-s, --suff
·
basename
用于获取路径中的文件名或路径名,还可以对末尾字符进行删除,即可从给定的文件名中删除目录和后缀。
命令格式
basename
有两种语法,
basename NAME [SUFFIX]
basename OPTION... NAME...
命令选项
-a, --multiple support multiple arguments and treat each as a NAME
-s, --suffix=SUFFIX remove a trailing SUFFIX; implies -a
-z, --zero end each output line with NUL, not newline
--help display this help and exit
--version output version information and exit
实例
获取末尾的文件名或路径名(也就是说,把包含最后一个/的前面的路径都删除掉)
$ basename /path/to/your/t1.fastq.gz
t1.fastq
默认删除所有结尾的/字符
$ basename /usr/local/
local
$ basename /usr/local
local
取消扩展名(如果对上述文件名,不想要扩展名.txt,那么在上述命名最好加上.txt即可)
$ basename t1.fastq.gz .gz
t1.fastq
也可以用参数
s参数
$ basename -s .gz t1.fastq.gz
t1.fastq
a参数
$ basename -a any/str1 any/str2
str1
str2
默认情况下,每条输出行以换行符(\n)结尾。要以NUL结尾,请使用-z(--zero)选项。
[root@localhost ~]# basename -z /usr/local
local[root@localhost ~]#
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
Have Fun
更多推荐
已为社区贡献1条内容
所有评论(0)