basename命令用于去掉文件名的目录和后缀(strip directory and suffix from filenames),对应的dirname命令用于截取目录

1. 命令格式:

1
2
3
4
# 去掉NAME中的目录部分
basename <NAME>
# 指定SUFFIX(后缀),如果不指定SUFFIX则在结果保留SUFFIX
basename <NAME> <SUFFIX>

2. 命令功能:

 去掉文件名的目录和后缀。

3. 常用参数

1
2
3
4
5
-a, --multiple, 支持多个名称,并将每个参数作为一个单独的名字
-s, --suffix=SUFFIX, 删除尾随的后缀
-z, --zero,用nul结尾,然不是换行
--help, 帮助信息
--version, 版本信息

4.使用实例:

实例1:去掉目录:

1
basename /usr/bin/sort.h

输出:

1
sort.h

实例2:去掉目录和后缀

1
2
3
4
# 指定了SUFFIX为‘.h’
basename /usr/include/sort.h .h
# 或者使用-s选项
basename -s .h /usr/include/sort.h

输出:

1
sort

实例3:NAME为‘/’

1
basename /

输出:

1
/

实例4:NAME为‘.’

1
basename .

输出:

1
.

实例5:支持多个名称(每个名称换行输出)

1
basename -a /data/hadoop/1901.gz /data/hadoop/1902.gz

输出:

1
2
1901.gz
1902.gz

实例6:支持多个名称(每个名称不换行输出)

1
2
# -z选项不换行
basename -az /data/hadoop/1901.gz /data/hadoop/1902.gz

输出:

1
1901.gz1902.gz