0 votos

Renombrar archivos a MD5 hashes, ¿cómo hacerlo para un directorio?

Usé este comando y terminé dañando varios directorios de archivos, no archivos críticos para el sistema en macOS Monterey 12.2.1, MacBook Pro 13 pulgadas 2020:

find . -type f -exec bash -c 'mv $1 "${1%.*}.$(md5 -q $1).${1##*.}"' bash {} \;

Los movió de sus directorios a /Users/ y los renombró con sus hashes md5, hice este comando:

cd Users/USERNAME/Desktop/mytest
find . -type f -exec bash -c 'mv $1 "${1%.*}.$(md5 -q $1).${1##*.}"' bash {} \;

¿No es este un comando altamente peligroso como sudo y cómo debería haberlo usado para archivos específicos de un solo directorio?

2 votos

Los comandos de Unix en general pueden ser peligrosos si no tienes cuidado. Siempre recomiendo usar mv -i o mv -f con cualquier tipo de movimiento a granel/automatizado, para evitar que mv sobrescriba archivos silenciosamente e irreversiblemente si hay un conflicto de nombres. Además, agrega echo antes del comando mv para obtener una "prueba en seco" donde imprimirá lo que ejecutaría si eliminas el mv.

0 votos

@GordonDavisson: Gracias. No conocía echo mv, mv -i o mv -f, sobrescribí archivos irremediablemente allí.

1voto

Solo para un directorio, puedes ejecutar la parte de mv en un bucle for con parámetros apropiados, o utilizar -maxdepth 1 con find:

find . -maxdepth 1 -type f \
    -exec bash -c 'mv "$1" "${1%.*}.$(md5 -q $1).${1##*.}"' bash {} \;

PD: sudo te permite ejecutar comandos como otro usuario, no te protege de daños.

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