Vale a pena citar a página de manual relevante do recurso que você está usando. Na seção EXPANSION
de man bash
:
${parameter:offset:length}
Substring Expansion. Expands to up to length characters of the value of parameter starting at the character specified by offset. If parameter is @, an
indexed array subscripted by @ or *, or an associative array name, the results differ as described below. If length is omitted, expands to the substring
of the value of parameter starting at the character specified by offset and extending to the end of the value. length and offset are arithmetic expres‐
sions (see ARITHMETIC EVALUATION below).
If offset evaluates to a number less than zero, the value is used as an offset in characters from the end of the value of parameter. If length evaluates
to a number less than zero, it is interpreted as an offset in characters from the end of the value of parameter rather than a number of characters, and
the expansion is the characters between offset and that result. Note that a negative offset must be separated from the colon by at least one space to
avoid being confused with the :- expansion.
Note que você pode realizar aritmética dentro de ${}
, então você pode parametrizar seu código da seguinte forma:
#!/bin/bash
position=5
for f in *JPG; do
mv -- "$f" "${f:0:$position-1}${f:$position}"
done
exit
Esta é uma solução rápida e suja que não verifica o tamanho dos nomes dos arquivos ou qualquer coisa, mas para um hack como este, deve ser ok.