Archiv verlassen und diese Seite im Standarddesign anzeigen : dateinamen in kleinbuchstaben wandeln
wolfgang
19-09-2000, 08:47
kennt jemand ne idee wie ich automatisch in dateinamen vorkommende grossbuchstaben in kleinbuchstaben umwandeln kann (verzeichnisweise)
vieleicht ein copy oder rename mit * oder ? wie unter dos - geht das ?
gruss
wolfgang
Würde ich mit einer "awk"-Anweisung machen.
Beispiel:
<pre>
user@sonne> ls BACKUP.TXT | awk '{print tolower($1)}'
backup.txt
</pre>
Thomas
In einem Shellskript könnte das wie folgt ausschauen:
<pre>
set $(ls)
for i do
test -d $i && continue
mv $i $(echo $i | awk '{print toupper($1)}') 2>/dev/null
done
</pre>
Grüße Thomas
wolfgang
19-09-2000, 13:03
DANKE erstmal aber...
wenn ich dein erstes beispiel ausfuehre so bekomme ich zwar den dateinamen als kleinbuchstaben aber die datei behaellt den namen in gross
dein 2. beispiel kapiere ich leider nicht
kannst du mir da noch mal helfen ?
gruss
wolfgang :-)
wolfgang
19-09-2000, 13:13
DANKE das script fuktioniert !!!
DOCH
ich habe es noch nicht verstanden, bitte um erklaerung
gruss
wolfgang :-))))))
Einführung in Shellprogrammierung - Teil 1 http://www.linuxforen.de/ubb/smile.gif
Zeile für Zeile...
<code>set $(ls)</code>
$(ls) wird durch das Ergebnis substituiert, also sieht der Aufruf in einem Zwischenschritt in etwa so aus:
<code>set Bla.TXT bla.hlp FOO.tXt</code>
"set" stellt seine Argumente in eine Umgebungsliste, sie verhält sich ebenso, wie die an ein Shellskript übergebenen Argumente. Deswegen arbeitet die nachfolende Zeile:
<code>for i do</code>
mit diesen Argumenten (alternativ kannst Du die Zeilen als "for i in $(ls) do" zusammen fassen)
<code>test -d $i && continue</code>
Hier wird getestet, ob es sich um ein Verzeichnis handelt, wenn ja, wird mit dem nächsten Schleifendurchlauf fortgefahren (möchtest Du auch Verzeichnisse in Kleinbuchstaben umwandeln, so streiche die Zeile)
<code>mv $i $(echo $i | awk '{print toupper($1)}') 2>/dev/null</code>
Der Reihe nach: $i ist die gerade betrachtete Datei und $(...) eine Kommandosubstitution, die den Dateinamen in Kleinbuchstaben wandelt. Am Ende steht die Fehlerumleitung nach /dev/null, da sonst "mv" meckern würde, falls $i bereits aus Kleinbuchstaben besteht).
Nun zum "awk".
awk arbeitet auf Dateien, indem wir den Dateinamen per Pipe "echo $i |..." dem Kommando zuführen, sieht es für dieses aus, als stünde die Zeichenkette in einer Datei. Die Arbeitsweise des awk zu erklären, würde meinen Zeitrahmen etwas sprengen, im Beispiel wandelt er die Zeichenkette (die im als Argument in $1 zur Verfügung steht) in Kleinbuchstaben um und gibt sie auf die Standardausgabe aus "print".
So, ich hoffe jetzt kommt etwas Licht ins Dunkel...
Thomas
wolfgang
19-09-2000, 17:10
SUPER nun beginne ich den inhalt zu kappsen
ich danke Dir recht sakrisch!
gruss
wolfgang
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.