Archiv verlassen und diese Seite im Standarddesign anzeigen : großbuchstaben in kleine umwandeln
Hi,
hat jemand eine Lösung, wie man alle Dateien und Verzeichnisse ab einem Ausgangsverzeichnis von Großbuchstaben in Kleinbuchstaben umwandeln kann?
Bräuchte dringend eine lösung.
Grüße,
Werner :rolleyes:
mrwatchdog
03-08-2001, 09:59
Um die Dateien und Verzeichnisnamen im aktuellen Verzeichnis in Kleinbuchstaben umzubenennen, brauchst Du nur eine kleine FOR-Schleife aufzubauen:
for f in * ; do n=`ls $f | tr [:upper:] [:lower:]`; mv $f $n; done
Wie das rekursiv geht, weiß ich nicht.
Gruß
Mr. Watchdog
mightymike99
03-08-2001, 14:39
Hi,
renamfiles:
<code>
for f in $1/* ; do n=`echo $f | tr [:upper:] [:lower:]`; mv $f $n; done
</code>
ein ls ist nicht notwendig "echo" tut's auch, ansonsten noch das $1 für einen anzugebenden Verzeichnisnamen vor den * und gut is.
ansonsten das zeugs noch in einen find-befehl und fertig:
<code>
find /base-dir -type d -exec renamefiles {} \;
</code>
wobei die geschweiften Klammern für das Suchergebnis stehen.
Gruß Tobias
[ 03. August 2001: Beitrag editiert von: mightymike99 ]
jgbauman
03-08-2001, 14:40
mmv -r \* \#l1
macht alles innerhalb eines Directories zu lowercase.
noch Rekursion dazu:
#! /bin/bash
function tolower() {
pushd . > /dev/null
cd $1
mmv -r \* \#l1
DIRS=`find . -mindepth 1 -maxdepth 1 -type d`
for I in $DIRS; do
tolower $I
done
popd > /dev/null
}
DIR=${1:-./}
test -d $DIR || {
echo "$DIR is no directory">&2
exit 1
}
Synopsis:
skript [dir]
Hallo,
vielen Dank an Euch für Eurere Vorschläge.
Leider konnte ich keine Lösung verwenden, da es mit allen irgendwie Probleme gab.
Ich möchte aber gerne ein kleines Script haben, da ich ich denke, daß mir das Problem in Zukunft noch öfter unterkommen wird. (Ausgelöst war es durch das Kopieren von Dateien von CD auf die Festplatte über Sambaanbindung. Dadurch wurden Kateien von klein auf gross umgeschrieben. Vielleicht auch ein Problem in den Sambaeinstellungen :-) )
mightymike99:
ich habe die for-schleife in die klammern gesetzt, bekomme dann aber sofort Fehler "die sich in der Nähe von "do" befinden. Wo der Syntaxfehler ist, konnte ich nicht finden. Ich habe leider noch zuwenig Prog-erfahrung.
jgbauman:
leider bin ich mit Deinem Vorschlag überhaupt nicht weitergekommen. könnte es sein, daß da ein Schreibfehler ist (DIR und DIRS) und das die Reihenfolge irgendwie nicht stimmt. Innnerhalb der Funktion wird die Funktion aufgerufen, aber (für mich) nirgendwo die Funktion :-) . Wenn´s doch stimmt, wäre ich Dir für ein paar Hilfestellungen dankbar.
Nun zu den allgemeinen Problemen, die ich feststellte:
Wenn man die Direktories umbenennt, tritt das Problem auf, daß z.B. bei /test/BlaB/TestT, zuerst das BlaB nach blab umbenannt wird, dann aber das TestT nicht mehr gefunden wird, weil eben BlaB nicht mehr existiert.
Ich habe in meiner Not nun mein Script mehrfach aufgerufen, aber das ich ja auch nicht so toll.
Mein Scipt:
#!/bin/ksh
#find . -type d -exec renamefiles { for f in $1/* ; do n=$(echo $f | '[:upper:]' '[:lower:]'); mv $f $n; done } \;
#find . -type d -exec renamefiles { for f in $1/* do n=$(echo $f); mv $f $n; done } \;
for f in $(find . -type d)
do
n=`echo $f | tr [:upper:] [:lower:]`
mv $f $n
done
Habt Ihr noch Ideen?
Bis dann,
Werner
jgbauman
05-08-2001, 13:54
Sorry, da ist wohl beim copy&paste die letzte Zeile verloren gegangen:
tolower $DIR
thenktor
20-09-2001, 15:41
ich weiß ja nicht ob's dir noch hilft, aber bei
freshmeat (http://www.freshmeat.net) gibts ein skript das genau das macht was du brauchst. such mal nach lowercase. du findest dann ein skript namens rename.
Hallo,
ich habe mir das Script runtergeladen,
nur sagt mein System, das es es nicht finden kann.
Aufruf als root ./rename
ska-cd2:~/batches/gross-kleinschreibung # ./rename
bash: ./rename: No such file or directory
ska-cd2:~/batches/gross-kleinschreibung #
Weiß Du was ich falsch mache?
Grüße,
Werner
Hallo,
also bei mir geht's
ls * | ./rename
rename liest von stdin.
Aber rekursiv die Dateien in Unterverzeichnissen umzubenennen scheint nicht zu gehen.
Gruß -
Dirk
[ 21. September 2001: Beitrag editiert von: Dirk S. ]
[ 21. September 2001: Beitrag editiert von: Dirk S. ]
Hallo!
Versuche es mal damit:
#!/bin/sh
# Dieses Script Kopiert Dir eine CD in ein bestimmtest Zieldirectory und
# macht einen tr von Gross auf klein Buchstaben
#M.f.G. TORO
echo "Mountpoint of CD? \c"; read CD
echo "Target Directory? \c"; read DIR
echo "Waiting ...."
set -x
cd $CD
cp -r * $DIR
cd $DIR
chmod -R 755 * #brauchst Du vielleicht nicht
cd $DIR
for j in `find $DIR -type d -depth -print`
do
cd $j
for i in `ls`
do
mv $i `echo $i | tr "[A-Z]" "[a-z]"`
done
done
set +x
#END END END
thenktor
28-10-2001, 13:45
hab noch was gefunden: chcase (http://freshmeat.net/projects/chcase/)
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.