複数のファイルの名前を大文字で始まるように変更する

複数のファイルの名前を大文字で始まるように変更する

CodeIgniter 3 を使用するように Web サイトを更新しようとしていますが、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"

そして、あなたが言及した2番目のケース(MY_log.php)については、次のように解決できます。

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

または:

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

関連情報