我正在嘗試更新我的網站以使用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"