3

я пытаюсь обновить свой веб-сайт для использования 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

Как я могу сделать это с командной строкой?

Спасибо ,

2 ответа2

1

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

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 из этих сценариев, чтобы выполнить переименование.

0

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

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

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

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

или же:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .