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 .php
Dateien 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 echo
aus 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"