Renomeando vários arquivos para começar com uma letra maiúscula

3

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 à Ucfirst ou em outras palavras - eles devem começar com uma letra maiúscula.

Por exemplo, se você tiver o seguinte arquivo de biblioteca:

application/libraries/mylibrary.php

... você precisará renomeá-lo para:

application/libraries/Mylibrary.php

O mesmo vale para bibliotecas de drivers e extensões e / ou substituições de 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 a linha de comando?

obrigado,

    
por tarek11011 25.01.2015 / 08:20

2 respostas

1

Com o Bash 4, primeiro ative as 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á recursivamente por .php arquivos.

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 arquivos MY_ , 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 o echo desses scripts para realizar a renomeação.

    
por 25.01.2015 / 09:13
0

Use um pequeno utilitário chamado mmv . Você pode colocar em maiúscula a primeira letra da seguinte forma:

mmv "[a-z]*\.*" "#u1#2.#3"

E para o segundo caso que você menciona ( MY_log.php ), você poderia resolver isso da seguinte maneira:

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

ou:

mmv "*_[a-z]*" "#1_#u2#3"
    
por 25.01.2015 / 09:15