shell 提取文件名和目录名

1、提取文件名

使用${var##*/}该方式是从左开始最大化匹配到字符"/",然后截掉左边内容(包括字符"/"),返回余下右侧部分。

var="/dir1/dir2/file.txt"
echo ${var##*/}

此脚本运行结果:file.txt

在shell脚本中,可以使用变量来保存这个结果,再加以利用,如file=${var##*/}

2,提取文件后缀

接上面的例子,如果我们将"/" 换成"." ,则可以提取文件后缀

$ var=/dir1/dir2/file.txt  
$ echo ${var##*.}  

此脚本运行结果:txt

如果文件的后缀不仅有一个,例如,file.tar.gz,命令${var##*.}仅能提取最后一个后缀。

3,提取文件路径

使用${var%/*}从右开始第一次匹配到字符"/",然后截掉右边内容(包括字符"/"),返回余下左侧部分。

$ var=/dir1/dir2/file.txt  
$ echo ${var%%/*}  

此脚本运行结果:/dir1/dir2

4,直接使用basename与dirname提取信息

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

最多阅读

SSH 登录失败:Host key verification failed 11月以前  |  2601次阅读
让你成为最历害的git提交人 11月以前  |  1729次阅读
wget使用技巧 11月以前  |  1587次阅读
切换到后台执行的shell命令 11月以前  |  1426次阅读
查询当前网段内,那些IP被使用了 11月以前  |  1400次阅读
使用shell统计代码行数 11月以前  |  1397次阅读
使用Shell获取当前时间 11月以前  |  1268次阅读
判断管理员 11月以前  |  1234次阅读
unzip和zip指令的使用方法 11月以前  |  1164次阅读
Shell按行读取文件 11月以前  |  967次阅读
读取Linux系统的CPU信息 11月以前  |  892次阅读
字符界面加减乘除计算器 11月以前  |  886次阅读
Shell的For循环的几种写法 11月以前  |  871次阅读
Linux下枚举所有的用户信息 11月以前  |  769次阅读
找出目录中最大的文件 11月以前  |  768次阅读