重新命名多個檔案以大寫字母開頭

重新命名多個檔案以大寫字母開頭

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

相關內容