Por que o excesso de E / S de eco e grep, sugiro usar os recursos de processamento de string bash:
TESTFNAME="filename.txt.283" # you can collect this from doing an ls in the target directory
# acquire last extension using a regexp, including the '.':
FEXT=$(expr "$TESTFNAME" : '.*\(\.[[:digit:]][[:digit:]]*\)')
# check if length is more than just the dot, that means we've got digits:
if [ ${#FEXT} -gt 1 ]; then
echo "Gotcha!" $testFilename ${#FEXT} $FEXT # do whatever you like with the file
fi
O regex pode ser otimizado e não é perfeito, mas aqui está o básico:
- . * no começo pesquisará no final do arquivo.
- [[: digit ::]]
é quase o mesmo que [0-9], mas eu acho mais legível
Confira outros recursos de manipulação de strings bash no TLDP aqui .