AHRlug - Linux user group Ahrtal
AHRlug-Forum  


<< Anfang < Vorherige 1 2 Nächste > Ende >>
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!
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!
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!
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!
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!
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!
<< Anfang < Vorherige 1 2 Nächste > Ende >>
© AHRlug - Linux user group Ahrtal 2002 - 2012 | | powered by: linux | apache | php | mysql | joomla