Problems with filename with spaces (was Pipes and commands
thatrequire two arguments)
Matthew Seaman
m.seaman at infracaninophile.co.uk
Tue Apr 13 05:42:31 PDT 2004
On Tue, Apr 13, 2004 at 11:33:29AM +0100, Peter Risdon wrote:
> 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.
Errr... how about:
# find /usr/home -name '*.rtf.exe' -print0 | \
xargs -0 -J % mv % /usr/newplace/
or
# find /usr/home -name '*.rtf.exe' -print0 | \
perl -n0e '($x = $_) =~ s,^.*/,/usr/newplace/,; rename $_, $x;'
Note: this puts all of those files into a single directory and doesn't
do anything to avoid overwriting one file with another. I assume
that's what you want.
This sort of thing is the whole point of '-print0' -- it sidesteps all
of the things the shell does with significant characters when it turns
a command line into an argument list. ie. no escaping needed.
Cheers,
Matthew
--
Dr Matthew J Seaman MA, D.Phil. 26 The Paddocks
Savill Way
PGP: http://www.infracaninophile.co.uk/pgpkey Marlow
Tel: +44 1628 476614 Bucks., SL7 1TH UK
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-questions/attachments/20040413/de7ff5b6/attachment.bin
More information about the freebsd-questions
mailing list