Problems with filename with spaces (was Pipes and commands thatrequire two arguments)

Peter Risdon peter at circlesquared.com
Tue Apr 13 03:29:18 PDT 2004


Thanks very much for the previous help - I missed the example in man xargs.

The files I am trying to manipulate include spaces in the file names, 
and I cannot seem to escape them effectively. If I try something like:

#find /usr/home -name *.rtf.exe -print0 | perl -p -e 's/\ /\\\ /g;' | 
xargs -0 -J % mv % /usr/newplace/

Then although all spaces are preceded by backslashes I get errors every 
time a space is encountered. So for a file at /usr/home/user/this is a 
file.rtf.exe I get file does not exist errors from mv at:
/usr/home/user/this\
and at:
is\
and at:
a\
and at:
file.rtf.exe (yes, a windows virus on a network share has been busy).

I have also tried

#find /usr/home -name *.rtf.exe -print0 | perl -p -e 's/\ /\\\ /g;' > 
listofdodgyfiles

and the list is fine. If I paste a line into mv on the command line, it 
works. If I use a simple script to read the file, same errors as 
mentioned above.

I'm sure I'm missing something obvious... Any nudges in the right 
direction would be gratefully received.

PWR.




More information about the freebsd-questions mailing list