我正在尝试更新我的网站以使用 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"