PHP
·
发表于 5年以前
·
阅读量:8283
使用${var##*/}
该方式是从左开始最大化匹配到字符"/",然后截掉左边内容(包括字符"/"),返回余下右侧部分。
var="/dir1/dir2/file.txt"
echo ${var##*/}
此脚本运行结果:file.txt
在shell脚本中,可以使用变量来保存这个结果,再加以利用,如file=${var##*/}
接上面的例子,如果我们将"/" 换成"." ,则可以提取文件后缀
$ var=/dir1/dir2/file.txt
$ echo ${var##*.}
此脚本运行结果:txt
如果文件的后缀不仅有一个,例如,file.tar.gz,命令${var##*.}仅能提取最后一个后缀。
使用${var%/*}
从右开始第一次匹配到字符"/",然后截掉右边内容(包括字符"/"),返回余下左侧部分。
$ var=/dir1/dir2/file.txt
$ echo ${var%%/*}
此脚本运行结果:/dir1/dir2
basename
的作用提取文件名,使用方法为basename NAME [SUFFIX]
,例子如下:
var=/dir1/dir2/file.txt
echo $(basename ${var})
此脚本运行结果:file.txt
后缀(SUFFIX)是一个可选项。所以,若只想提取出文件名file,而不带有后缀,还可以在变量的后面加上后缀名,例子如下:
var=/dir1/dir2/file.txt
echo $(basename ${var} .txt)
此脚本运行结果:file
dirname
该命令的作用是从路径中提取出路径名,使用方法为 dirname NAME
,使用例子如下:
var=/dir1/dir2/file.txt
echo $(dirname ${var})
此脚本运行结果:/dir1/dir2