Mac Terminal - renomeie * .png.png para * .png

1

Eu tenho um monte de imagens que gostaria de renomear da seguinte forma:

  • *.png.png --> *.png
  • *.jpeg.jpg --> *.jpg
  • *.JPEG --> *.jpg

A única coisa que eu tentei até agora foi mv *.png.png *.png , mas eu sabia que isso não funcionaria, mas ainda assim tive uma chance.

Existe uma maneira simples (ou talvez não) de renomear arquivos em lote com esse padrão?

    
por maGz 08.04.2015 / 08:00

2 respostas

2

Aqui está algo usando find para renomear *.png.png -> *.png :

find ./ -name '*.png.png' -type f \
        -exec sh -c 'mv {} ./$(basename -s .png.png {}).png' \;

Não é gerenico, então você precisa personalizá-lo para as outras extensões de arquivo.

    
por 08.04.2015 / 08:29
2

Aqui está uma solução somente de shell para os três casos que você tem em sua pergunta:

for f in *.png.png ; do mv -i "${f}" "${f%.png}" ; done

for f in *.jpeg.jpg ; do mv -i "${f}" "${f%.jpeg.jpg}.jpg" ; done

for f in *.JPEG ; do mv -i "${f}" "${f%.JPEG}.jpg" ; done

Digite no diretório onde os arquivos serão renomeados.

Se você gosta de generalizar esse tipo de solução na forma de um script de substituição de sufixo, você pode fazer:

#!/bin/sh
from=${1:?} to=${2:?}
for f in *${from} ; do mv -i "${f}" "${f%${from}}${to}" ; done

e chame esse script com dois parâmetros, o sufixo a ser substituído e o novo sufixo.

    
por 08.04.2015 / 08:53