查找基本文件名的最后一个字符

查找基本文件名的最后一个字符

假设有不同的文件,

script.sh
text.txt
pic_1.png

或没有扩展名的文件 - 'hello'。如何提取基本文件名的最后一个字符? IE,

script. sh - t
text.txt -  t
pic_1.png - p
hello - o

有没有一种简单的方法可以做到这一点?

答案1

首先,删除扩展(如果有):

name_no_ext=${file%.*}  

然后,你得到最后一个字符:

char=${name_no_ext: -1} #note the space after colon  

如果您想了解有关 bash 中字符串操作的更多信息,请参阅Parameter Expansionbash 手册部分。

答案2

正面:

for w in script.sh text.txt pic_1.png; do
  w=${w%.*}
  all_but_last_char=${w%?}
  w=${w##"$all_but_last_char"}
  printf '%s\n' "$w"
done

请注意,它不适用于某些 shell 中的 unicode 字符,例如mksh, dash

相关内容