Datum: 2004-02-15
Quelle: debian-user-german
In einem Verzeichnisbaum sollen rekursiv alle Pfade in Kleinbuchstaben umbenannt werden.
find . -depth -print | while read f; do lcf="`dirname $f`/`basename $f | tr '[:upper:]' '[:lower:]'`" test -e "$lcf" || mv "$f" "$lcf" done
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.