Renomeando imagens em ordem específica

7

Este é o meu problema: eu tenho uma pasta com 500 imagens nomeadas:

1.jpg
2.jpg
3.jpg

e assim por diante.

Copiei essa pasta e agora preciso renomear essas mesmas imagens de 501 para 1000, mas em ordem como esta:

1.jpg  becomes    501.jpg
2.jpg  becomes    502.jpg
3.jpg  becomes    503.jpg          
....

Quando uso meu comando de renomeação padrão:

i=501;for img in $(find . -iname '*.jpg'); do echo -n "Converting $img"; mv $img $i.jpg  && echo $i && ((i++)); done

Ordena imagens de 501 a 1000, mas todas estão espalhadas:

23.jpg becomes 501.jpg,    
66.jpg becomes 502.jpg 
...   

(eles estão na ordem certa, mas os misturam)

Eu sei que é provavelmente um comando que estou perdendo ...

    
por Painkiller 25.08.2017 / 19:01

5 respostas

7

Experimente o Thunar , que é o gerenciador de arquivos padrão do Xfce. É muito leve e vem com uma ferramenta de renomeação em massa acessível. Você pode instalar o Thunar executando o seguinte comando no Terminal:

sudo apt-get install thunar

Você provavelmente poderá instalar a partir do Ubuntu Software também.

Como usar o utilitário

  1. Depois de instalar o Thunar, ative o utilitário Renomear em massa .
  2. Clique no ícone + e adicione os arquivos que deseja renomear na ordem correta.
  3. Clique na caixa suspensa logo abaixo da lista de arquivos selecionados e selecione Numeração . Clique na caixa ao lado e selecione Somente nome .
  4. Na caixa " Iniciar com: " digite 501, deixe a caixa " Texto: " vazia. Você deve ver a visualização das alterações na coluna Novo nome .
  5. Para aplicar as alterações, clique no botão Renomear arquivos .

Além de Numeração , este utilitário suporta as seguintes ações:

  • Inserir data / hora
  • Inserir / Substituir
  • Remover caracteres
  • Pesquisar & amp; Substituir
  • Maiúsculas / Minúsculas
por pomsky 25.08.2017 / 19:16
12

O comando find localiza os arquivos na ordem 'diretório' ( 23.jpg , 66.jpg , ...). você poderia colocar um |sort após o achado.

Mas seus métodos são supercomplexos.

for i in $( seq 1 500 ) ; do
    j=$(( $i + 500 ))
    mv $i.jpg $j.jpg
done 
    
por waltinator 25.08.2017 / 19:16
10

com o comando rename .

rename -n 's/^(\d+)/sprintf("%d",+500)/e' *.jpg

Ou em bash puro e usando expansão de parâmetros do shell .

for FILE in *.jpg; do
    mv "$FILE" "$(( ${FILE%.jpg}+500 )).jpg" 
done 
    
por αғsнιη 25.08.2017 / 19:43
4

Se eu entendi o que você está perguntando corretamente, acho que você pode fazer isso usando a ferramenta de renomeação padrão:

rename 's/^(\d+)/sprintf("%d",+500)/e' *.jpg -vn

Você deve remover a opção -vn (verbose - sem ação) após o teste, para tornar a alteração efetiva.

    
por sempaiscuba 25.08.2017 / 19:05
0

Outra maneira de conseguir isso apenas com o comando shell

count = 1; para i em ls ; do mv $ i CN $ ((contagem ++)). $ {i ## *.}; feito

    
por aneeshep 13.02.2018 / 08:58