Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 13 Apr 2004 11:33:29 +0100
From:      Peter Risdon <peter@circlesquared.com>
To:        FreeBSD Question List <freebsd-questions@freebsd.org>
Subject:   Problems with filename with spaces (was Pipes and commands thatrequire two arguments)
Message-ID:  <407BC1F9.4050305@circlesquared.com>
In-Reply-To: <20040408165511.GD8182@dan.emsphone.com>
References:  <40757879.1010307@circlesquared.com> <20040408165511.GD8182@dan.emsphone.com>

next in thread | previous in thread | raw e-mail | index | archive | help
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.




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?407BC1F9.4050305>