如何在bash中检索文件名或扩展名
这个问题在这里已经有了答案:
打印最后一个由非字母字符分隔的提交。
awk -F '[^[:alpha:]]' '{ print $0,$NF }'
/home/myuser/mydata/myfile/data.log log
/home/myuser/mydata/myfile/myfile.gz gz
/home/myuser/mydata/myfile/mod.conf conf
/home/myuser/mydata/myfile/security security
/home/myuser/mydata/myfile/last last
这应该适合你:
x='/home/myuser/mydata/myfile/security'
( IFS=[/.] && arr=( $x ) && echo ${arr[@]:(-1):1} )
security
x='/home/myuser/mydata/myfile/data.log'
( IFS=[/.] && arr=( $x ) && echo ${arr[@]:(-1):1} )
log
提取文件名路径中的最后一个元素:
filename=$(path##*/}
在文件名中的点后面提取字符:
extension=${filename##*.}
但(我的评论),而不是看扩展名,它可能会更好地使用file
。 见man file
。