Переименование нескольких файлов так, чтобы имена начинались с заглавной буквы

Переименование нескольких файлов так, чтобы имена начинались с заглавной буквы

Я пытаюсь обновить свой веб-сайт для использования CodeIgniter 3, но начиная с CodeIgniter 3.0 все имена файлов классов (библиотек, драйверов, контроллеров и моделей) должны именоваться в стиле Ucfirst или, другими словами, они должны начинаться с заглавной буквы.

Например, если у вас есть следующий файл библиотеки:

application/libraries/mylibrary.php

...тогда вам придется переименовать его в:

application/libraries/Mylibrary.php

То же самое касается библиотек драйверов и расширений и/или переопределений собственных библиотек и основных классов CodeIgniter.

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

Вышеуказанные файлы следует соответственно переименовать в следующие:

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

Контроллеры:

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

Модели:

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

Как это сделать с помощью командной строки?

Спасибо ,

решение1

В Bash 4 сначала включите дополнительные параметры подстановки:

shopt -s extglob

Теперь убедитесь, что вы вызываете это только в папках, содержащих файлы PHP, которые вы хотите переименовать. Он будет рекурсивно искать .phpфайлы.

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

Для MY_файлов вам может потребоваться еще один запуск:

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

Удалите echoиз этих скриптов, чтобы выполнить переименование.

решение2

Используйте небольшую утилиту под названием mmv. Вы можете сделать первую букву заглавной следующим образом:

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

А для второго случая, который вы упомянули ( MY_log.php), вы можете решить это следующим образом:

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

или:

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

Связанный контент