假设有不同的文件,
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 Expansion
bash 手册部分。
答案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
。