Tenho vários arquivos com nomes como:
ID_Italy.txt
ID2_USA.txt
ID3_Germany.txt
.....
se eu quiser imprimir antes do _ eu posso fazer:
for file in *.txt; do print "${file%_*}";done
Resultado:
ID
ID2
ID3
Se eu quiser imprimir e remover a extensão:
for file in *.txt; do print "${file%.*}";done
Resultado:
ID_Italy
ID2_USA
ID3_Germany
No entanto, gostaria de levar apenas o que estiver entre _ e . e ter a seguinte saída:
Italy
USA
Germany
Como imprimir isso?
Editado, sem tempvar:
Criei os arquivos com um
touch
comando e executei ofx
script:Se você estiver usando zsh (que suporta substituição de parâmetros aninhados) ao contrário do Bash, você pode fazer:
Ou, de outra forma, usando uma solução de matriz no Bash:
Usando o
basename
utilitário para remover o sufixo do nome do arquivo e uma substituição de variável para remover o bit do nome até o último sublinhado:bash
:padrão
POSIX
sh
: