On Sat, Feb 26, 2000 at 07:14:37PM +0100, Stephan Goetter wrote:
Hi,
ich hab kein Problem, mich interessiert nur genau warum folg. klappt (ich will Dateien mit einem Leerzeichen umbenennen ' ' -> '_')
find . -type f -name "*\ *" -exec echo {} `echo "{}"|sed s/\ /_/g` ;
./test datei ./test datei
Warum das so ist habe ich noch nicht rausbekommen. Wenn man alles zwischen -exec und ; einer extra shell gibt, klappt alles:
find . -type f -name "*\ *" -exec sh -c 'echo $0 `echo $0|sed s//_/g`' {} ;
Scheinbar hat -exec mit `` oder | Probleme ..
MMh. Irgendie komisch. Das sed wird in deiner obigen Variante jedenfalls auch aufgerufen, bekommt aber den Output von echo "{}" nicht ueber die Pipe. Prinzipiell funktioniert aber eine pipe auch innerhalb von `` Bsp:
rf11@max:~/tmp> echo `echo x|sed s/x/y/` y rf11@max:~/tmp>
Was nun aber funktioniert ist folg. leider etwas umständlich(2 x sed) und auch buggy: funkt z.b. mit "foo bar_foobardoo" nicht
for i in `find . -type f -name "*\ *"|sed s/\ /_/g`; do echo `echo $i |sed s/_/\ /g` $i;done
In der Art haette ich auch noch einen:
find . -type f -name "*\ *"|(while read x; do echo $x `echo $x|sed s//_/g`; done)
Nettes Problem jedenfalls!
Reinhard