Renomeação em lote, independentemente da extensão do arquivo

2

Sou bastante novo para renomear grupos e já dei uma olhada e descobri algumas coisas sobre como renomear muitos arquivos que são todos do mesmo tipo, mas nada que realmente renomeie um monte de arquivos que possuem extensões diferentes.

por isso, quero dizer que tenho um diretório assim:

Folder 
  |
  file.jpg
  EBUFEWO.png
  otherFile.jpg

e estou tentando descobrir como posso renomeá-lo para ser assim:

Folder
  |
  Renamed_0001.jpg
  Renamed_0002.png
  Renamed_0003.jpg

Gostaria de manter as extensões dos arquivos na pasta, mas renomeá-los como eu tenho acima aqui.

Estou procurando há algum tempo e não encontrei nenhum exemplo disso, qualquer ajuda seria ótima!

    
por Kyle Littlestar 25.01.2017 / 23:59

2 respostas

1

Eu acho que faria

shopt -s nullglob

cd Folder

n=1
for file in *.*; do 
  printf -v newfile 'Renamed_%04d.%s' $((n++)) "${file##*.}"
  echo mv -- "$file" "$newfile"
done
mv -- EBUFEWO.png Renamed_0001.png
mv -- file.jpg Renamed_0002.jpg
mv -- otherFile.jpg Renamed_0003.jpg

( echo adicionado para fins de teste). Alternativamente, com o prename

baseado em perl
cd Folder
prename -n 'our $n; s/(.*)\.(.*)$/sprintf "Renamed_%04d.%s", ++$n, /e' *.*
EBUFEWO.png renamed as Renamed_0001.png
file.jpg renamed as Renamed_0002.jpg
otherFile.jpg renamed as Renamed_0003.jpg

( -n adicionado para fins de teste).

    
por steeldriver 26.01.2017 / 02:26
0

Espero que isso ajude

count=1; \
for file in * ; do ext=${file##*.}; \
while [ ${#count} -ne 3 ]; do count="0"$count; done; \
mv "$file" Renamed_$count.$ext; count=$((10#$count+1)); done

Isso foi testado no conteúdo de uma única pasta e executado conforme você especificou.

  1. ext=${file##*.} obtendo a extensão do arquivo a ser renomeado.
  2. while [ ${#count} -ne 3 ]; do count="0"$count; done você solicitou que os arquivos renomeados contivessem 3 dígitos isso adiciona o número necessário de zeros à esquerda, 1 se torna 001 e 20 se torna 020 etc
  3. mv "$file" Renamed_$count.$ext; renomeia o arquivo para os parâmetros especificados.

Devido à minha experiência limitada, tenho certeza de que existem métodos mais eficientes e mais simples.

Observe que isso foi executado em uma pasta especificada uma vez.

    
por SwallowTail 26.01.2017 / 01:50