Der mv-Befehl benennt Verzeichnisse auf der Kommandozeile um. Obwohl sein Name “move” bedeutet, erledigt er beides: Verschieben und Umbenennen.
Syntax
mv [OPTIONEN] QUELLE ZIEL
QUELLE– Das Verzeichnis, das umbenannt werden soll.ZIEL– Der neue Name für das Verzeichnis.
Ein einzelnes Verzeichnis umbenennen
Um ein Verzeichnis umzubenennen, gibst du den aktuellen Namen als erstes und den neuen Namen als zweites Argument an:
mv projekte archiv
Dieser Befehl benennt das Verzeichnis projekte in archiv um.
Für Verzeichnisse außerhalb des aktuellen Arbeitsverzeichnisses verwendest du absolute oder relative Pfade:
mv /home/user/alte-daten /home/user/backup-2024
Wichtig: Falls das Zielverzeichnis bereits existiert, wird das Quellverzeichnis hinein verschoben statt umbenannt. Prüfe vorher mit ls, ob der Zielname frei ist.
Mehrere Verzeichnisse umbenennen
Mit einer Bash-Schleife
Eine for-Schleife kombiniert mit mv benennt mehrere Verzeichnisse nach einem Muster um. Das folgende Beispiel hängt das aktuelle Datum an alle Verzeichnisnamen im aktuellen Arbeitsverzeichnis an:
for d in */; do
mv -- "$d" "${d%/}_$(date +%Y%m%d)"
done
Der Ausdruck */ findet alle Verzeichnisse, ${d%/} entfernt den abschließenden Schrägstrich und $(date +%Y%m%d) fügt das Datum im Format JJJJMMTT hinzu.
Mit dem rename-Befehl
Der rename-Befehl bietet mehr Flexibilität durch reguläre Ausdrücke. Die Perl-Version ist besonders leistungsfähig.
Leerzeichen durch Unterstriche ersetzen:
find . -maxdepth 1 -type d | rename 's/ /_/g'
Verzeichnisnamen in Kleinbuchstaben umwandeln:
find . -maxdepth 1 -type d | rename 'y/A-Z/a-z/'
Mit der Option -n simulierst du die Umbenennung, ohne sie tatsächlich durchzuführen:
find . -maxdepth 1 -type d | rename -n 's/ /_/g'
Zusammenfassung
Der mv-Befehl benennt einzelne Verzeichnisse schnell um. Für Massenumbenennungen kombinierst du ihn mit Schleifen oder greifst zum rename-Befehl mit regulären Ausdrücken.