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"