Como embaralhar arquivos e renomear sequencialmente

Como embaralhar arquivos e renomear sequencialmente

Eu tenho um conjunto de imagens .png, atualmente nomeadas em sequência de 1 a 1000. Como posso pegar essas imagens e reatribuí-las a um número aleatório entre 1 e 1000 para terminar com o mesmo intervalo de números sequenciais, mas a imagem sob cada número não é mais o mesmo?

Responder1

Poderia ser feito assim:

names=({1..1000}.png)
new_names=($(shuf -e {1..1000}.png.tmp))
for n in "${!names[@]}"; do
    echo mv "${names[$n]}" "${new_names[$n]}"
done && rename -n 's/\.tmp$//' *.tmp
  • Crie duas matrizes $namese$new_names
  • precisamos nomeá-lo .tmpou algo assim para não substituir os arquivos existentes, vamos corrigir isso com rename.
  • faça um loop sobre as chaves da matriz e execute mvpara cada uma.

Nota: Para realmente executar o comando, remova o echoe -ndo rename.

informação relacionada