命令
basename
描述
strip directory and suffix from filenames
获取路径中的文件名
用法
1 2
| basename NAME [SUFFIX] basename OPTION... NAME...
|
选项
1 2 3 4
| Options: -a 指定多个路径 -s SUFFIX 指定后缀过滤,即不显示后缀 -z 不换行输出
|
注意
无
示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
| $ basename /path/to/data data $ basename /usr/bin/vim vim
$ basename /data/backup/dbback.tar.gz .tar.gz dbback
$ basename -s tar.gz /data/backup/dbback.tar.gz dbback. $ basename -s .tar.gz /data/backup/dbback.tar.gz dbback $ basename -a /dir1/file1 /dir2/file2 file1 file2
$ basename -as .txt /dir1/file1.txt /dir2/file2.txt file1 file2
使用linux命令提取文件名或目录名
$ dirname /user/work/project/backup.tar.gz /user/work/project
$ basename /user/work/project/backup.tar.gz backup.tar.gz
$ basename /user/work/project/backup.tar.gz .tar.gz backup $ basename /user/work/project/backup.tar.gz .gz backup.tar
使用变量${}提取文件名或目录名 原理是变量的提取和替换操作,它可以提取非常多的内容,并不一定是路径中的'/'或'.'
%:表示从右边算起第一个
%%:表示从右边算起最后一个 *:表示要删除的内容,对于
取目录名:${var%/*} (类似 dirname "$var") 取文件名:${var##*/} (类似 basename "$var") 取最短扩展名:${var##*.} 取最长扩展名:${var#*.} 取最短基本名称:${var%%.*} 或者 basename ${var%%.*} 取最长基本名称:${var%.*} 或者 basename ${var%.*}
$ var=/user/work/project/backup.tar.gz
$ echo ${var%/*} /user/work/project $ dirname "$var" /user/work/project
$ echo ${var##*/} backup.tar.gz $ basename "$var" backup.tar.gz
$ echo ${var#*.} tar.gz
$ echo ${var##*.} gz
$ echo ${var%%.*} /user/work/project/backup
$ basename ${var%%.*} backup
$ echo ${var%.*} /user/work/project/backup.tar
$ basename ${var%.*} backup.tar
|