Localizando o último caractere do nome do arquivo base

2

Digamos que existem arquivos diferentes,

script.sh
text.txt
pic_1.png

ou arquivos sem extensão - 'olá'. Como você pode extrair o último caractere do nome do arquivo base? ou seja,

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

Existe uma maneira simples de fazer isso?

    
por Rinato Fenice 22.11.2016 / 04:25

2 respostas

3

Primeiro, você remove a extensão, se houver:

name_no_ext=${file%.*}  

você recebe o último caractere:

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

Se você quiser aprender mais sobre manipulação de strings no bash, vá para a seção Parameter Expansion do manual do bash.

    
por 22.11.2016 / 04:46
2

POSIXLY:

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

Observe que ele não funciona com caracteres unicode em alguns shells, como mksh , dash .

    
por 22.11.2016 / 04:51