From: Christian Weisgerber (naddy_at_mips.rhein-neckar.de)
Date: 30. Aug 1999
Mark Seuffert Pirates <captain_at_pirate.de> wrote:
> ich hab das Problemchen alle Dateien (inkl. Unterverzeichnisse und
> enthaltene Dateien) in Kleinbuchstaben umzuwandeln.
Möchtest du die Dateinamen oder den Dateiinhalt wandeln?
Unix FAQ, 2.6.
> Ich würde mir jetzt ein kleines Perl-Script schreiben (wie immer)....
> vielleicht gibts da ja was Besseres (find?) und/oder jemand hat da schon
> was dazu. Danke! :)
Richtig, wenn man etwas rekursiv über einen Dateibaum durchführen
möchte, dann ist der erste Schritt find(1). Typische Variationen sind:
- find die Dateinamen ausgeben lassen und in einer Shell-for-Schleife
abarbeiten.
- find für jede Datei mit -exec einen Befehl ausführen lassen.
- find die Dateinamen ausgeben lassen, mit sed in die auszuführenden
Befehle transformieren, und in sh pipen.
- Wenn die Bearbeitung von mehreren Dateien zusammengefasst werden kann:
die Ausgabe von find in xargs <Befehl> pipen.
Anzumerken ist, dass es auf Shell-Ebene schwierig ist, mit Dateien
mit "pathologischen" Namen (eingebettetes Newline) umzugehen. Das
ist im Hausgebrauch normalerweise kein Thema, aber wenn man als
root etwas über unbekannte Dateibäume, womöglich noch automatisch
und unbeaufsichtigt, laufen lässt, dann ist das eine Einladung für
Probleme.
Zum Wandeln von Groß- nach Kleinbuchstaben nimmt man tr(1).
"tr '[:upper:]' '[:lower:]'" wertet auch die Locale-Informationen für
Buchstaben jenseits von ASCII aus.
-- Christian "naddy" Weisgerber naddy_at_mips.rhein-neckar.de
Dieses Archiv wurde generiert von hypermail 2.1.2 : 11. Mar 2002 CET