Dateien und Verzeichnisse rekursiv in Kleinbuchstaben umwandeln

Datum: 2004-02-15
Quelle: debian-user-german

Worum ging es?

In einem Verzeichnisbaum sollen rekursiv alle Pfade in Kleinbuchstaben umbenannt werden.

Code
find . -depth -print | while read f; do
  lcf="`dirname $f`/`basename $f | tr '[:upper:]' '[:lower:]'`"
  test -e "$lcf" || mv "$f" "$lcf"
done
Beschreibung

Die Lösung ähnelt der in hässliche Dateien umbenennen - groß nach klein gezeigten mit dem Unterschied, dass hier alle Pfade umbenannt werden sollen. Dafür muss die Option -depth des find eingesetzt werden. Mit ihr liefert der find die Inhalte eines Verzeichnis vor dem Verzeichnisnamen, arbeitet also quasi von innen nach außen. Sonst würde man ein Verzeichnis umbenennen, bevor die Einträge umbenannt sind, diese Pfade würde man dann nicht mehr finden.