Me gustaría cambiar el nombre de archivo de muchos archivos agregando un sufijo aleatorio a los nombres de archivo existentes.
Intenté cambiar este código (cambia el nombre del archivo en lugar de agregar un sufijo) pero no tuve éxito.
#!/bin/bash
chars=( {a..z} {A..Z} {0..9} )
function rand_string {
local c=$1 ret=
while((c--)); do
ret+=${chars[$((RANDOM%${#chars[@]}))]}
done
printf '%s\n' "$ret"
}
for file in ~/Desktop/test/*; do
ext=$(echo ${file} | sed 's,^.*(\.[^\.]*$),\1,')
mv "$file" ~/Desktop/test/"$file$(rand_string 10)"${ext}
done
Sería preferible una solución de línea de comandos o de automatización
Si solo desea agregar una cadena aleatoria, el for
bucle es bastante simple:
cd ~/Desktop/test/
for file in *; do
suffix="${file##.*}"
base="${file%.*}"
mv "$file" "$base.$(rand_string 10).$suffix"
done
Cambie 10
a la cantidad de caracteres aleatorios que desea agregar.
cd
requiere. Y al mirar su error, es posible que también tenga un error tipográfico en alguna parte.
sin ladera
El Ekim
El Ekim