
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
$names
e$new_names
- precisamos nomeá-lo
.tmp
ou algo assim para não substituir os arquivos existentes, vamos corrigir isso comrename
. - faça um loop sobre as chaves da matriz e execute
mv
para cada uma.
Nota: Para realmente executar o comando, remova o echo
e -n
do rename
.