Cambiar el nombre de varios archivos para que comiencen con una letra mayúscula

Cambiar el nombre de varios archivos para que comiencen con una letra mayúscula

Estoy intentando actualizar mi sitio web para usar CodeIgniter 3, pero a partir de CodeIgniter 3.0, todos los nombres de archivos de clase (bibliotecas, controladores, controladores y modelos) deben nombrarse de manera similar a Ucfirst o, en otras palabras, deben comenzar con mayúscula. carta.

Por ejemplo, si tiene el siguiente archivo de biblioteca:

application/libraries/mylibrary.php

... entonces tendrás que cambiarle el nombre a:

application/libraries/Mylibrary.php

Lo mismo ocurre con las bibliotecas de controladores y las extensiones y/o anulaciones de las propias bibliotecas y clases principales de CodeIgniter.

application/libraries/MY_email.php application/core/MY_log.php

Los archivos anteriores deben cambiarse respectivamente de nombre al siguiente:

application/libraries/MY_Email.php application/core/MY_Log.php

Controladores:

application/controllers/welcome.php -> application/controllers/Welcome.php

Modelos:

application/models/misc_model.php -> application/models/Misc_model.php

¿Cómo puedo hacer eso con la línea de comando?

gracias ,

Respuesta1

Con Bash 4, primero habilite opciones globales adicionales:

shopt -s extglob

Ahora asegúrese de llamar a esto solo en las carpetas que contienen los archivos PHP cuyo nombre desea cambiar. Buscará .phparchivos de forma recursiva.

for f in **/*.php; do 
  fn=$(basename "$f") # remove directory name
  Fn=${fn^}           # uppercase first letter
  echo mv -- "$f" "$(dirname "$f")/$Fn"  # combine both
done

Para los MY_archivos, es posible que necesite otra ejecución:

for f in **/MY_*.php; do
  fn=$(basename "$f")
  Fn=${fn#MY_}     # remove MY_ from filename
  Fn="MY_${Fn^}"   # uppercase first letter and add MY_ again
  echo mv -- "$f" "$(dirname "$f")/$Fn"
done

Elimine echode estos scripts para realizar el cambio de nombre.

Respuesta2

Utilice una pequeña utilidad llamada mmv. Puede poner en mayúscula la primera letra de la siguiente manera:

mmv "[a-z]*\.*" "#u1#2.#3"

Y para el segundo caso que mencionas ( MY_log.php), esto lo podrías resolver de la siguiente manera:

mmv "*_[a-z]*.php" "#1_#u2#3.php" 

o:

mmv "*_[a-z]*" "#1_#u2#3"

información relacionada