O erro vem da execução do script com /bin/sh
, que não possui a expansão de parâmetro específica que você usa. Você está usando /bin/sh
porque tem um espaço entre o #
e o !
na primeira linha.
São permitidos espaços após o !
: O espaço é permitido entre #! e / bin / bash em shebang?
Também relacionado: Qual interpretador de shell executa um script sem shebang?
Você pode se safar facilmente com um único script aqui:
find . -type f -name '*.enc' -exec bash -c '
for n do
n=${n##*/}
printf "Full name:\t%s\n" "$n"
printf "Cut name:\t%s\n" "${n:0:6}"
done' sh {} +
Executar isso nos nomes de arquivo que você apresentar produzirá
Full name: 0bd57df4.enc
Cut name: 0bd57d
Full name: 3189204c.enc
Cut name: 318920
Full name: 39f831fb.enc
Cut name: 39f831
Full name: 68ff6d19.enc
Cut name: 68ff6d
Se você quiser apenas remover a extensão:
find . -type f -name '*.enc' -exec sh -c '
for n do
n=${n##*/}
printf "Full name:\t%s\n" "$n"
printf "Cut name:\t%s\n" "${n%.*}"
done' sh {} +
Isso produz
Full name: 0bd57df4.enc
Cut name: 0bd57df4
Full name: 3189204c.enc
Cut name: 3189204c
Full name: 39f831fb.enc
Cut name: 39f831fb
Full name: 68ff6d19.enc
Cut name: 68ff6d19