2.12 根据扩展名切分文件名

《Linux Shell 脚本攻略(第 2 版)》读书笔记

提取文件名称

$ 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

你可能感兴趣的:(2.12 根据扩展名切分文件名)