Saltar al contenido

¿Cómo cambio el nombre de todos los archivos a minúsculas?

Si hallas algún fallo en tu código o proyecto, recuerda probar siempre en un entorno de testing antes añadir el código al proyecto final.

Solución:

Si se siente cómodo con la terminal:

  1. Abra Terminal.app, escriba cd y luego arrastre y suelte la Carpeta que contiene los archivos a renombrar en la ventana.
  2. Para confirmar que está en el directorio correcto, escriba ls y presione enter.
  3. Pegue este código y presione enter:

    for f in *; do mv "$f" "$f.tmp"; mv "$f.tmp" "`echo $f | tr "[:upper:]" "[:lower:]"`"; done
    
  4. Para confirmar que todos sus archivos están en minúsculas, escriba ls y presione enter de nuevo.

(Gracias a @bavarious en Twitter por algunas correcciones, y gracias a John Whitley a continuación por hacer esto más seguro en sistemas de archivos que no distinguen entre mayúsculas y minúsculas).

La pregunta tal como se hizo es general y también importante, por lo que deseo proporcionar una respuesta más general:

Caso más simple (seguro la mayor parte del tiempo y en Mac OS X, pero sigue leyendo):

for i in * ; do j=$(tr '[:upper:]' '[:lower:]' <<< "$i") ; mv "$i" "$j" ; done

También debe manejar espacios en los nombres de archivo (cualquier sistema operativo):

IFS=$'n' ; for i in * ; do j=$(tr '[:upper:]' '[:lower:]' <<< "$i") ; mv "$i" "$j" ; done

Debe manejar de manera segura nombres de archivo que difieren solo entre mayúsculas y minúsculas en un sistema de archivos que distingue entre mayúsculas y minúsculas y no sobrescribir el destino (por ejemplo, Linux):

for i in * ; do j=$(tr '[:upper:]' '[:lower:]' <<< "$i") ; [ -e "$j" ] && continue ; mv "$i" "$j" ; done 

Nota sobre Mac OS X:

El sistema de archivos de Mac no distingue entre mayúsculas y minúsculas, conserva las mayúsculas y las minúsculas.

Sin embargo, no es necesario crear archivos temporales, como se sugiere en la respuesta aceptada y los comentarios, porque en primer lugar no pueden existir dos nombres de archivo que difieren solo por caso, ref.

Para mostrar esto:

$ mkdir test
$ cd test
$ touch X x
$ ls -l 
total 0
-rw-r--r--  1 alexharvey  wheel  0 26 Sep 20:20 X
$ mv X x
$ ls -l 
total 0
-rw-r--r--  1 alexharvey  wheel  0 26 Sep 20:20 x

Una versión de concha de pescado:

for old in *
    set new (echo $old | tr '[A-Z]' '[a-z]')
    mv $old $new
end

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *