将多个文件重命名为以大写字母开头

将多个文件重命名为以大写字母开头

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

相关内容