
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
$names
y$new_names
- Necesitamos asignarle un nombre
.tmp
para no sobrescribir los archivos existentes, solucionaremos este problema conrename
. - recorra las claves de la matriz y ejecútelas
mv
para cada una.
Nota: Para ejecutar realmente el comando, elimine echo
y -n
de rename
.