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