[ILUG] Re: script handling filenames with spaces

Pete McEvoy pete at yerma.org
Sat Aug 18 23:22:25 IST 2007


Thanks to Ian and Marcus replying, I got it going with:

for i in $(ls $FOLDERS)
do
 find $FOLDERS$i/mail/ -type f |while read ; do mb2md -s "$REPLY" -d
 "$MAILDIR$i/.$(basename "$REPLY")" ;
 done
 done

Beer time!

Cheers

-- 
Pete

On Sat, Aug 18, 2007 at 10:05:07PM +0100, Marcus Furlong wrote:
> On Saturday 18 August 2007 19:18 in <20070818181836.GA7347 at yerma.org>, Pete
> McEvoy wrote:
> 
> > Hi.
> > Could anyone advise on the below script:
> > 
> > #!/bin/sh -x
> > 
> > FOLDERS=/tmp/folders/
> > MAILDIR=/tmp/maildir/
> > 
> > for i in `ls $FOLDERS`
> > do
> >  for j in "`find $FOLDERS$i/mail/ -type f`"
> >   do
> >    mb2md -s "$j" -d "$MAILDIR$i/.$(basename $j)"
> >    done
> >    done
> >    
> > The contents of /tmp/folders/$i/mail/ are mailboxes, which can have
> > spaces and perhaps odd characters in the name, as such I need to ensure
> > $j is quoted before being passed to mb2md.
> > Niall on irc recommended the use of print0 and xargs -0 , but at this
> > late stage of the day I'm unable to grok how I would work them into my
> > script.
> > 
> > Any help would be appreciated.
> > 
> > Thanks
> > 
> 
> Maybe try setting IFS to be just <newline> instead of <space>, <tab> and
> <newline>? Add this to the start of your script.
> 
> IFS="
> "
> 
> That should handle the spaces anyway, not sure how to best go about odd
> characters.
> 
> Marcus.
> 
> -- 
> Irish Linux Users' Group mailing list
> About this list : http://mail.linux.ie/mailman/listinfo/ilug
> Who we are : http://www.linux.ie/
> Where we are : http://www.linux.ie/map/



More information about the ILUG mailing list