Umbenennen mehrerer Dateien, sodass diese mit einem Großbuchstaben beginnen

Umbenennen mehrerer Dateien, sodass diese mit einem Großbuchstaben beginnen

ich versuche, meine Website für die Verwendung von CodeIgniter 3 zu aktualisieren, aber ab CodeIgniter 3.0 müssen alle Klassendateinamen (Bibliotheken, Treiber, Controller und Modelle) in einer Ucfirst-ähnlichen Weise benannt werden oder mit anderen Worten – sie müssen mit einem Großbuchstaben beginnen.

Wenn Sie beispielsweise die folgende Bibliotheksdatei haben:

application/libraries/mylibrary.php

... dann müssen Sie es umbenennen in:

application/libraries/Mylibrary.php

Dasselbe gilt für Treiberbibliotheken und Erweiterungen und/oder Überschreibungen der eigenen Bibliotheken und Kernklassen von CodeIgniter.

application/libraries/MY_email.php application/core/MY_log.php

Die obigen Dateien sollten jeweils wie folgt umbenannt werden:

application/libraries/MY_Email.php application/core/MY_Log.php

Controller:

application/controllers/welcome.php -> application/controllers/Welcome.php

Ausführungen:

application/models/misc_model.php -> application/models/Misc_model.php

Wie kann ich das mit der Befehlszeile machen?

Danke ,

Antwort1

Aktivieren Sie bei Bash 4 zunächst zusätzliche Globbing-Optionen:

shopt -s extglob

Stellen Sie nun sicher, dass Sie dies nur in den Ordnern aufrufen, die die PHP-Dateien enthalten, die Sie umbenennen möchten. Es wird rekursiv nach .phpDateien gesucht.

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

Für die MY_Dateien ist möglicherweise ein weiterer Durchlauf erforderlich:

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

Entfernen Sie diese echoaus diesen Skripten, um die Umbenennung durchzuführen.

Antwort2

Verwenden Sie ein kleines Dienstprogramm namens mmv. Sie können den ersten Buchstaben wie folgt groß schreiben:

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

Und für den zweiten von Dir genannten Fall ( MY_log.php) könntest Du das wie folgt lösen:

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

oder:

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

verwandte Informationen