3 votos

Agregando sufijos aleatorios a los nombres de archivos

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 de 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,^.*(\.[^\.]*$),\1,')
    mv "$file" ~/Desktop/test/"$file$(rand_string 10)"${ext}
done

Una solución de línea de comandos o automator sería preferible

0 votos

¿Qué exactamente has intentado, puedes añadir el script que tienes hasta ahora?

0 votos

Actualmente he cambiado la última línea con una variable adicional pero obtuve un error

0 votos

!/bin/bash chars=( {a..z} {A..Z} {0..9} ) función 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

3voto

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

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

Cambia el 10 al número de caracteres aleatorios que deseas agregar.

0 votos

Gracias Patrix por tu respuesta. El script está funcionando, pero ahora el sufijo se agrega después de la extensión del archivo. Claramente no soy bueno cambiando código, ¿ves alguna manera de agregar el sufijo después del nombre de archivo pero antes de la extensión del archivo?

0 votos

@El-Ekim Por favor asegúrate de que tu pregunta represente todos los hechos. En este caso, habría sido útil tener algunos ejemplos claros antes/después de los nombres de archivo.

0 votos

Tienes razón Patrix. Debería haber dado un ejemplo de la conversión de nombres de archivo. Cuando uso tu bucle for-recibo un error que dice: mv: rename /Users/Ekim/Desktop/test/xmas_candles.jpg a /Users/Ekim/Desktop/test/xmas_candles.HF8ohLw0Gl./Users/Ekim‌​/Desktop/test/xmas_c‌​andles.jpg: No such file or directory Muchas gracias por tomarte el tiempo para ayudarme.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X