O seguinte parece funcionar para qualquer coisa que se ajuste ao padrão imageNUMBER.jpg
. Eu coloquei echo
antes do comando mv
para mostrar primeiro o que o comando faria; para realmente executar a renomeação, basta remover o echo
for i in 'ls image*.jpg|sort -V' ; do
x='echo $i|sed -e "s/image\(.*\).jpg//"'
y=$(( $x - 1 ))
echo mv -i $i image$y.jpg
done
Na primeira linha, o ls image*.jpg|sort -V
fará com que os arquivos JPG sejam listados com números ascendentes no nome do arquivo. A linha x=
extrai o número do nome do arquivo. A linha y=
, em seguida, diminui o número em um. O nome do arquivo de entrada e o y
number são usados no comando mv
, onde o -i
flag o notificará antes de sobrescrever um arquivo.
Para meu próprio pequeno teste, isso produziu a saída:
mv -i image1.jpg image0.jpg
mv -i image2.jpg image1.jpg
mv -i image123.jpg image122.jpg
Pessoalmente, sugiro renomear para um nome de arquivo mais diferente, já que agora a ordem em que os arquivos são processados pode fazer uma grande diferença.