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.