Agregar sufijos aleatorios a los nombres de archivo

3

Me gustaría cambiar el nombre de archivo de muchos archivos agregando un sufijo aleatorio a los nombres de archivo existentes.

He intentado cambiar este código (cambia el nombre del archivo en lugar de agregar un sufijo) pero sin é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,^.*(\.[^\.]*$),,')
    mv "$file" ~/Desktop/test/"$file$(rand_string 10)"${ext}
done

Sería preferible una línea de comando o una solución de automatización

    
pregunta El-Ekim 27.04.2018 - 09:49

1 respuesta

3

Si solo desea agregar una cadena aleatoria, el bucle for es bastante simple:

cd ~/Desktop/test/
for file in *; do
    suffix="${file##.*}"
    base="${file%.*}"
    mv "$file" "$base.$(rand_string 10).$suffix"
done

Cambie el 10 al número de caracteres aleatorios que desea agregar.

    
respondido por el nohillside 27.04.2018 - 10:28

Lea otras preguntas en las etiquetas