glockenklang
Mitglied
 Forum-Platinmitglied
| Beiträge: 101 |   |
|
Scheiß Dateinamen von Windowsnutzern - 04/10/2007 10:50
Hallo zusammen
Habe das Problem das ich meine Benutzer nicht dazu überreden kann vernünftige Dateinamen/Verzeichnisnamen zu verwenden, es gibt zu viele folgender Art:
Zuweisung LAA 2007 01 22 Seite 2.jpg Schüller - 30.01.2004.doc
So, es geht jetzt um die Richtige Syntax:
find . * -type d -exec tr [:upper:] [:lower:] {} ;
führt bei mir immer zu einer Fehlermeldung, wie kann ich den tr Befehl ausführen lassen das er alle Großbuchstaben in Kleinbuchstaben verwandelt. Alle Versuche mit mit verschiedenen Anführungszeichen und/oder Klammern funktionieren nicht. Auch [A-Z] [a-z] nützt nichts.
Fehlermeldung: tr: too many arguments Versteh ich schon, nur wo sind die zuvielen Argumente, kann ja sein das ich auf dem Schlauch stehe!
Danke schon mal
Wolfgang
|
|
|
| | Kein öffentlicher Schreibzugriff erlaubt, bitte erst registrieren! |
bibi
Mitglied
 Forum-Platinmitglied
| Beiträge: 52 |   |
|
Re:Scheiß Dateinamen von Windowsnutzern - 04/10/2007 23:42
Hallo Wolfgang,
zugegeben, mit Leerzeichen und Sonderzeichen ist das immer so ein Problem, aber die verwendeten Befehle sollte man auch kennen. Mir ist folgendes nicht klar geworden bei Deinem find:
"find . * -type d"
Du suchst im aktuellen Verzeichis (".") und in allen Einträgen ("*") nach Verzeichnissen. So bekommst Du alle Verzeichnisse, und diese doppelt. Im Beispiel hast Du ".doc" und ".jpg" verwendet, und das sind doch keine Verzeichnisse, oder?
Dann habe ich mit Deiner Verwendung von "tr" ein Problem. "tr" liest und schreibt von und zur Standard-Ein- bwz. Ausgabe. Also kannst Du "tr" nicht alle gefundenen Verzeichnisse übergeben (wobei es dann auch meckert, weil es zu viele Argumente bekommt).
Mit Leerzeichen und Sonderzeichen ist das immer problematisch, dazu kann ich ein paar Tipps geben: - schau dir mal xargs an (vor Allem die Option -0) - schau dir dann man find an (hier das Kommando -print0) Damit kannst Du statt Leerzeichen als Trennung das Null-Zeichen wählen.
- ich nehme immer lieber ein Skript und gebe es dann find mit (z.B. mv_to_lower und dann irgendwie "find . -exec mv_to_lower {} ;")
Hoffe, das hiflt, sonst helfe ich gerne weiter (Kto-Nr. per PM )
Grüße Bernd
|
|
|
| | Kein öffentlicher Schreibzugriff erlaubt, bitte erst registrieren! |
glockenklang
Mitglied
 Forum-Platinmitglied
| Beiträge: 101 |   |
|
Re:Scheiß Dateinamen von Windowsnutzern - 05/10/2007 08:00
bibi schrieb:
"find . * -type d"
Du suchst im aktuellen Verzeichis (".") und in allen Einträgen ("*") nach Verzeichnissen. So bekommst Du alle Verzeichnisse, und diese doppelt.
Ohne ("*") gleiche Fehlermeldung.
Im Beispiel hast Du ".doc" und ".jpg" verwendet, und das sind doch keine Verzeichnisse, oder?
Ist schon klar.
Dann habe ich mit Deiner Verwendung von "tr" ein Problem. "tr" liest und schreibt von und zur Standard-Ein- bwz. Ausgabe. Also kannst Du "tr" nicht alle gefundenen Verzeichnisse übergeben (wobei es dann auch meckert, weil es zu viele Argumente bekommt).
Habe Gestern mal angefangen mich mmit der Problematik auseinanderzu setzen. Also Google und mal schauen. Da wurde in einem forum eben dieses tr in Verbindung mit find besprochen. Letztendlich will ich vor einem Backup aus allen Verzeichnis und Dateinamen des Benutzers alle Leerzeichen (auch doppelte) mit und alle Punkte außer den vor ".doc/.jpg/usw." durch "_" ersetzen. Alles klein schreiben und wenn möglich deutsche Umlaute durch "ae/oe...." ersetzen.
Mit Leerzeichen und Sonderzeichen ist das immer problematisch, dazu kann ich ein paar Tipps geben: - schau dir mal xargs an (vor Allem die Option -0) - schau dir dann man find an (hier das Kommando -print0) Damit kannst Du statt Leerzeichen als Trennung das Null-Zeichen wählen.
Werd ich machen. Wird wohl auf ein Script hinaus laufen, wie gesagt fange gerade an herum zu suchen.
Danke für die Antwort
Wolfgang
|
|
|
| | Kein öffentlicher Schreibzugriff erlaubt, bitte erst registrieren! |
bibi
Mitglied
 Forum-Platinmitglied
| Beiträge: 52 |   |
|
Re:Scheiß Dateinamen von Windowsnutzern - 05/10/2007 11:56
glockenklang schrieb: bibi schrieb:
"find . * -type d"
Du suchst im aktuellen Verzeichis (".") und in allen Einträgen ("*") nach Verzeichnissen. So bekommst Du alle Verzeichnisse, und diese doppelt.
Ohne ("*") gleiche Fehlermeldung.
Nein, ein Fehler ist das nicht, aber Du bearbeitest eben alle Verzeichnisse doppelt.
Im Beispiel hast Du ".doc" und ".jpg" verwendet, und das sind doch keine Verzeichnisse, oder?
Ist schon klar.
Dann habe ich mit Deiner Verwendung von "tr" ein Problem. "tr" liest und schreibt von und zur Standard-Ein- bwz. Ausgabe. Also kannst Du "tr" nicht alle gefundenen Verzeichnisse übergeben (wobei es dann auch meckert, weil es zu viele Argumente bekommt).
Habe Gestern mal angefangen mich mmit der Problematik auseinanderzu setzen. Also Google und mal schauen. Da wurde in einem forum eben dieses tr in Verbindung mit find besprochen. Letztendlich will ich vor einem Backup aus allen Verzeichnis und Dateinamen des Benutzers alle Leerzeichen (auch doppelte) mit und alle Punkte außer den vor ".doc/.jpg/usw." durch "_" ersetzen. Alles klein schreiben und wenn möglich deutsche Umlaute durch "ae/oe...." ersetzen.
Dann denke auch an alle anderen Sonderzeichen (Akzente, Fragezeichen, Ausrufezeichen, Klammern, Stern, ...)
IMHO ist es besser, ein Backup so zu machen, wie die Dateien im Original sind. Dabei ist dann natürlich der Zeichensatz zu beachten.
Mit Leerzeichen und Sonderzeichen ist das immer problematisch, dazu kann ich ein paar Tipps geben: - schau dir mal xargs an (vor Allem die Option -0) - schau dir dann man find an (hier das Kommando -print0) Damit kannst Du statt Leerzeichen als Trennung das Null-Zeichen wählen.
Werd ich machen. Wird wohl auf ein Script hinaus laufen, wie gesagt fange gerade an herum zu suchen.
Danke für die Antwort
Wolfgang
|
|
|
| | Kein öffentlicher Schreibzugriff erlaubt, bitte erst registrieren! |
lippi
Mitglied
 Forum-Platinmitglied
| Beiträge: 136 |   |
|
Re:Scheiß Dateinamen von Windowsnutzern - 05/10/2007 13:38
Hallo Wolfgang,
bei meinem Umstieg von Windows zu Linux hatte ich ein ähnliches Problem mit MP3 Dateien, ich wollte auch, dass alle immer im gleichen Format sind (kleingeschrieben, Unterstriche, Bindestriche etc.) Da ich von Skripten keine Ahnung hatte, hatte ich es mit dem Programm "krename" probiert. Im großen und ganzen kam ich damit gut zurecht, fast alle meine Wünsche hatte das Programm umsetzen können. Den kleinen Rest hatte ich dann per Hand machen müssen, die Arbeit hielt sich dann aber in Grenzen.
Viele Grüße
Lippi
|
|
|
| | Kein öffentlicher Schreibzugriff erlaubt, bitte erst registrieren! |
glockenklang
Mitglied
 Forum-Platinmitglied
| Beiträge: 101 |   |
|
Re:Scheiß Dateinamen von Windowsnutzern - 05/10/2007 14:10
hallo bibi und lippi
for i in *; do mv -v "$i" `echo $i | tr ' ' '_'`; done
Bin soweit gekommen, mit obigem Einzeiler werden alle Leerzeichen in einem Verzeichnis durch _ ersetzt. echo ist nur das man was sieht.
for i in *; do mv -v "$i" `echo $i | tr 'A-Z' 'a-z'`; done
wandelt alles in Kleinbuchstaben um.
Jetzt suche ich noch was, damit z.B Das im ganzen home Verzeichnis bis in alle Unterverzeichnisse funktioniert. Und natürlich noch Ä => Ae etc.
Hallo lippi
krename hab ich noch nicht getestet nur auf der Komadozeile mit rename rumprobiert, in dem fall noch kein brauchbares Ergebnis. Die Geschichte soll automatisiert laufen, habe keine Lust da ständig hinterher sein zu müssen.
Wolfgang
|
|
|
| | Kein öffentlicher Schreibzugriff erlaubt, bitte erst registrieren! |
|