Methode 1: Schleife verkleinern
Die häufigste Methode, um die Dateierweiterungen in einem Verzeichnis rekursiv zu ändern, besteht darin, eine Bash für die Schleife zu verwenden. Wir können den Benutzer auffordern, das Zielverzeichnis, die alte Erweiterung und die neue Erweiterung mithilfe eines Bash -Skripts umzubenennen.
Schritt 1: Montieren Sie das Skript
Lassen Sie uns beginnen, das Skript zusammenzustellen. Der erste Teil, den wir brauchen, ist, das Zielverzeichnis zu erhalten. Dafür können wir lesen als:
#!/Bin/Bash
Echo "Geben Sie das Zielverzeichnis ein"
Lesen Sie target_dir
CD $ target_dir
Echo "Geben Sie die Dateierweiterung ein, um ohne Punkt zu suchen"
Lesen Sie Old_ext
Echo "Geben Sie die neue Dateierweiterung ein, um ohne Punkt umbenannt zu werden"
Lesen Sie new_ext
echo "$ target_dir, $ old_ext, $ new_ext"
Das obige Skript wird den Benutzer auffordert, das Verzeichnis zu verarbeiten und dann CD in das Set -Verzeichnis zu verarbeiten.
Als nächstes bekommen wir die alte Erweiterung ohne den Punkt (.); Schließlich erhalten wir die neue Erweiterung, um die Dateien umzubenennen.
Lassen Sie uns nun die Dateien verarbeiten. Dafür; Wir können eine einfache Regel implementieren, die die Dateien rekursiv durchsucht wie:
für Datei in *.$ old_ext
Tun
mv -v "$ file" "$ file%.$ old_ext.$ new_ext "
Erledigt;
Die für die Schleife oben sucht das übergebene Verzeichnis für alle Dateien mit der alten Erweiterung und benennen sie sie in die neue Erweiterung um.
Um ausführlich zu bekommen, verwenden wir den MV -Befehl mit -v. Sie können diese Ausgabe unterdrücken, indem Sie das -V -Flag durch durch Austausch durchsetzen -
Schritt 2: Führen Sie das Skript aus
Lassen Sie uns das Skript nun auf den Test setzen. Das letzte Skript ist unten:
#!/Bin/Bash
Echo "Geben Sie das Zielverzeichnis ein"
Lesen Sie target_dir
CD $ target_dir
Echo "Geben Sie die Dateierweiterung ein, um ohne Punkt zu suchen"
Lesen Sie Old_ext
Echo "Geben Sie die neue Dateierweiterung ein, um ohne Punkt umbenannt zu werden"
Lesen Sie new_ext
echo "$ target_dir, $ old_ext, $ new_ext"
für Datei in *.$ old_ext
Tun
mv -v "$ file" "$ file%.$ old_ext.$ new_ext "
Erledigt;
In diesem Test verwenden wir das Verzeichnis /var /log .Protokolldateien auf .Bak. Hier sind der Inhalt des Verzeichnisses, bevor das Skript ausgeführt wird.
$ ls l/var/log/| Grep .ProtokollLassen Sie uns nun das Skript ausführen.
$ chmod +x Erweiterungen.SchDer obige Screenshot zeigt das Skript, das die Dateien verarbeitet und alle Dateien umbenannt wird .log an .Bak.
Da dies ein interaktives Skript ist, ist es nützlich, wenn Sie die Erweiterung nicht harte Codierung haben möchten.
Im Folgenden finden Sie den Inhalt des Verzeichnisses /var /log nach dem Skript.
$ ls -l/var/log/| Grep .BakUm die Änderungen zurückzuverwenden, wechseln Sie die alte Erweiterung auf .Bak und die neue Erweiterung als .Protokoll
Methode 2: Befehl umbenennen
Wenn Sie keine Lust haben, mit einem Skript zu arbeiten.
Verwenden Sie den Befehl zum Umbenennen, um den Befehl zu installieren:
$ sudo apt -Get Installieren Sie den Umbenennen -yNach der Installation können Sie den Befehl umbenennen wie:
# Wechseln Sie in das ZielverzeichnisÄndern Sie die Änderungen, um die Änderungen zurückzuverwenden, die .Bak zu .Protokoll und umgekehrt.
$ sudo umbenennen 's/\.bak/.Protokoll/' *.BakMethode 3: MMV -Befehl
Sie können auch den Befehl MMV verwenden, mit dem Sie mehrere Dateien gleichzeitig verschieben können. Installieren Sie MMV mit dem Befehl:
$ sudo apt-Get Installieren Sie MMVUm Dateien mit MMV -Befehl umzubenennen:
$ cd/var/log/Die Nr. 1 verschiebt die Dateien in das aktuelle Verzeichnis. Sobald Sie den Befehl ausgeführt haben, wird er alle umbenannt .Protokollieren Sie Dateien in der angegebenen Erweiterung.
Zusammenfassen
In diesem Artikel wurden verschiedene Methoden erörtert. Sie können Dateierweiterungen in einem bestimmten Verzeichnis rekursiv umbenennen können. Es ist jedoch gut zu beachten, dass Sie andere Strategien implementieren können als die in diesem Leitfaden besprochenen.
Vielen Dank fürs Lesen und denken Sie daran, zu teilen!