estou tentando atualizar meu site para usar o CodeIgniter 3, mas a partir do CodeIgniter 3.0, todos os nomes de arquivos de classe (bibliotecas, drivers, controladores e modelos) devem ser nomeados de maneira semelhante ao Ucfirst ou em outras palavras - eles devem começar com maiúscula carta.
Por exemplo, se você tiver o seguinte arquivo de biblioteca:
application/libraries/mylibrary.php
... então você terá que renomeá-lo para:
application/libraries/Mylibrary.php
O mesmo vale para bibliotecas de drivers e extensões e/ou substituições das próprias bibliotecas e classes principais do CodeIgniter.
application/libraries/MY_email.php application/core/MY_log.php
Os arquivos acima devem ser renomeados respectivamente para o seguinte:
application/libraries/MY_Email.php application/core/MY_Log.php
Controladores:
application/controllers/welcome.php -> application/controllers/Welcome.php
Modelos:
application/models/misc_model.php -> application/models/Misc_model.php
Como posso fazer isso com linha de comando?
obrigado ,
Responder1
Com o Bash 4, primeiro habilite opções adicionais de globbing:
shopt -s extglob
Agora certifique-se de chamar isso apenas nas pastas que contêm os arquivos PHP que você deseja renomear. Ele procurará .php
arquivos recursivamente.
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
Para os MY_
arquivos, você pode precisar de outra execução:
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
Remova echo
esses scripts para realizar a renomeação.
Responder2
Use um pequeno utilitário chamado mmv
. Você pode colocar a primeira letra em maiúscula da seguinte maneira:
mmv "[a-z]*\.*" "#u1#2.#3"
E para o segundo caso que você menciona ( MY_log.php
), você poderia resolver da seguinte forma:
mmv "*_[a-z]*.php" "#1_#u2#3.php"
ou:
mmv "*_[a-z]*" "#1_#u2#3"