Cómo mezclar archivos y cambiarles el nombre secuencialmente

Cómo mezclar archivos y cambiarles el nombre secuencialmente

Tengo un conjunto de imágenes .png, actualmente nombradas en secuencia del 1 al 1000. ¿Cómo puedo tomar estas imágenes y reasignarlas a un número aleatorio entre 1 y 1000 para terminar con el mismo rango de números secuenciales, pero la imagen ¿Debajo de cada número ya no es el mismo?

Respuesta1

Se podría hacer así:

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
  • Crea dos matrices $namesy$new_names
  • Necesitamos asignarle un nombre .tmppara no sobrescribir los archivos existentes, solucionaremos este problema con rename.
  • recorra las claves de la matriz y ejecútelas mvpara cada una.

Nota: Para ejecutar realmente el comando, elimine echoy -nde rename.

información relacionada