提取文件名称
$ file_jpg="sample.jpg"
$ name=${file_jpg%.*}
$ echo File name is: $name
File name is: sample
${file_jpg%.*}
的含义:从$file_jpg
中删除位于%
右侧通配符(.*
)所匹配的字符串。
-
%
属于非贪婪操作。它从右到左找出匹配通配符的最短结果。 -
%%
属于贪婪操作。它从右到左找出通配符的最长结果。
$ VAR=back.fun.book.txt
$ echo ${VAR%.*}
back.fun.book
$ echo ${VAR%%.*}
back
提取文件扩展名
$ extension=${file_jpg#*.}
$ echo Extension is: $extension
Extension is: jpg
${file_jpg#*.}
的含义:从$file_jpg
中删除位于#
右侧通配符(*.
)所匹配的字符串。
-
#
属于非贪婪操作。它从左到右找出匹配通配符的最短结果。 -
##
属于贪婪操作。它从左到右找出通配符的最长结果。
$ VAR=back.fun.book.txt
$ echo ${VAR#*.}
fun.book.txt
$ echo ${VAR##*.}
txt