[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: piping find to zip -- with spaces in path



On 01/11/2011 08:46 PM, Robert Blair Mason Jr. wrote:
On Tue, 11 Jan 2011 14:53:33 -0700
Bob Proulx<bob@proulx.com>  wrote:

Robert Blair Mason Jr. wrote:
Rob Owens<rowens@ptd.net>  wrote:
I tried this and it successfully creates myfile.zip:

find ./ -iname "*.jpg" -print | zip myfile -@

But it fails if there are spaces in the path or filename.  How can I
make it work with spaces?
I think the best way would be to quote them in the pipe:

find ./ -iname "*.jpg" -printf "'%p'\n" | zip myfile -@
But that fails when the filename contains a quote character.

   John's Important File

Using zero terminated strings (zstrings) are best for handling
arbitrary data in filenames.

Real Unix(TM) users never put [^[:ascii:]] characters in file names.

Bob
True.  Underscores are _wonderful_ things.  But remember, Linux is Not Unix!

Unfortunately for the OP, i don't *think* zip accepts zstrings.  Perhaps a script to just remove all of the non-ascii characters in the filename of all files in the current directory?

Random tangent, but pascal strings are often more efficient from a programming standpoint than c-style strings...

I didn't prune anything because I can't figure out where to do it without losing any semblance of coherence, but anyway: The comment about real Unixers not using ascii characters: what about urls? They come from the Unix world, and are full of underscores and question marks and equal signs. Then there are emails, all of which require the @ sign. Not
complaining, just asking.

--doug

--
Blessed are the peacemakers...for they shall be shot at from both sides. --A. M. Greeley


Reply to: