根据扩展名分割文件名

实例1ide

 

[root@localhost ~]# file_jpg="sample.jpg"spa

[root@localhost ~]# name=${file_jpg%.*}字符串

[root@localhost ~]# echo File name : $nameget

File name : sampleit


为了从“名称.扩展名”这种格式的文件名中提取名称,咱们使用了%操做符class

${VAR%.*}的含义是:变量

从$VARIABLE中删除位于%右侧的通配符(在实例中是.*)所匹配的字符串。通配符从右向左进行匹配。
扩展

给VAR复制,VAR=sample.jpg。那么,通配符从右向左就会匹配到.jpg,所以,从$VAR中删除匹配结果,就会获得输出"sample"。file


%属于非贪婪(non-greedy)操做。它从右道左找出匹配通配符的最短结果。还有另外一我的操做符%%,与%类似,但行为模式确实贪婪的(greedy),这意味着它会匹配符号条件的最长的字符串im


实例1.1


[root@localhost ~]# VAR=zhaonimei.nimei.mei

[root@localhost ~]# echo ${VAR%.*}

zhaonimei.nimei

[root@localhost ~]# echo ${VAR%%.*}

zhaonimei

————————————————————————————————————————————

实例2


[root@localhost ~]# file_jpg="sample.jpg"

[root@localhost ~]# name=${file_jpg#*.}

[root@localhost ~]# echo File name : $name

File name : jpg


#操做符从文件名中提取扩展名。这个操做符与%相似,不过求值方向是从左向右。 ${VAR#*.}的含义是:


从$VARIABLE中删除位于#右侧的通配符(即在实例中使用的*.)所匹配的字符串。通配符从左向右进行匹配。

和%%相似,#也有一个相对应的贪婪操做符##

##从左向右进行贪婪匹配,并从指定变量中删除匹配结果。


实例2.1


[root@localhost ~]# VAR=zhaonimei.nimei.mei

[root@localhost ~]# echo ${VAR##*.}

mei

相关文章
相关标签/搜索