Hallo, On Tue, 05 Feb 2002, Ralph Müller wrote:
Alexander Puchmayr wrote:
Versuchs damit: find /home/ralph -type f -exec echo "{}" \;
Hilft leider nicht. Das gleiche auch mit dem Vorschlag von Jürgen.
Ich glaube das Problem ist in diesem Falle nicht bei "find", sondern bei "for" zu suchen. "for" nimmt (offenbar zwingend) als Trennzeichen _immer_ ein Leerzeichen. Das kann man "for" offenbar auch nicht ändern. :-(
Doch. Das geht. man bash -> IFS. dh@slarty[4]:/tmp/test (0) $ mkdir 'b0rken filenames'; cd 'b0rken filenames' [ein paar touch] dh@slarty[4]:/tmp/test/b0rken\ filenames (0) $ ls -lab insgesamt 1 -rw-r--r-- 1 dh dh 0 Feb 5 21:17 --help drwxr-xr-x 2 dh dh 120 Feb 5 21:17 . drwxr-xr-x 3 dh dh 600 Feb 5 21:17 .. -rw-r--r-- 1 dh dh 0 Feb 5 21:17 ... -rw-r--r-- 1 dh dh 0 Feb 5 21:17 a\nb\nc\b\nd -rw-r--r-- 1 dh dh 0 Feb 5 21:17 a\ b\ c dh@slarty[4]:/tmp/test/b0rken\ filenames (0) $ cd .. dh@slarty[4]:/tmp/test (0) $ IFS="`echo -e '\f'`"; for f in `find b0rken\ filenames/ -type f -printf "%p\f"`; do echo "'$f'"; done; IFS=" " 'b0rken filenames/--help' 'b0rken filenames/a b c d' 'b0rken filenames/a b c' 'b0rken filenames/...' dh@slarty[4]:/tmp/test (0) $ Wie man an den beim echo eingefuegten '' erkennt geht's sogar mit den Zeilenumbruechen (beim ls -b als \n auftauchend) und sogar mit nem Backspace *eg* (\b im ls). Pipt man das nach less, dann verschwindet auch das c... Dabei is \f (ascii 0x0c) der sog. Form Feed, man kann aber auch jedes andere Zeichen (ausser \0 (ascii 0x00)) nehmen. Wichtig ist nur, dass man nicht vergisst IFS wieder zurueckzusetzen, das Verhalten der shell wird dann _sehr_ eigentuemlich. *g* Daher am besten gleich hinter dem Befehl auf den Standardwert zuruecksetzen. wie oben: IFS="<Leerzeichen><Tab><Zeilenumbruch>" Dabei muss man in der bash den <Tab> mittels Strg+v <tab> eingeben, den Zeilenumbruch kann man, bei noch geoffneten ", direkt eingeben. Alternativ, eigentlich besser ist es, folgendes zu machen: OLDIFS="$IFS"; IFS="<was auch immer>"; Befehle; IFS="$OLDIFS" Viel Spass... Aber evtl. sollte man das auf ner extra Konsole oder xterm machen, da kann man zur Not einfach das Ding dichtmachen[1] ;) -dnh [1] auf der Konsole zur Not von ner anderen aus "killen". -- Windows verhält sich zu Betriebssystemen wie Astrologie zu Astronomie. -- am DLUG-Stammtisch