基本ファイル名の最後の文字を見つける

基本ファイル名の最後の文字を見つける

別のファイルがあると仮定すると、

script.sh
text.txt
pic_1.png

または拡張子のないファイル - 'hello'。基本ファイル名の最後の文字を抽出するには?つまり、

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

などの一部のシェルでは、Unicode文字では機能しませんmkshdash

関連情報