[ILUG] script handling filenames with spaces

Ian Spillane iantheteacher at gmail.com
Sat Aug 18 20:34:28 IST 2007


A while loop piped from a temporary text file (of one filename per line)
works best, otherwise you have to mess around really with sed converting
spaces to a temporary string before passing through a for loop. A sample
while loop reads:

    find -name whatever -printf "%P\n" >> "files.tmp"
    while read record[f]
        do
              cat "${record[f]}"
              let "f+=1"
    done < " files.tmp"
    rm -f "files.tmp"

On 8/18/07, Pete McEvoy <pete at yerma.org> 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
>
> --
> Pete
> --
> 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/
>



-- 
www.NoToTheDump.org

----------------------------------------------
Ian Spillane
Cork College of Commerce
Morrison's Island, Cork, Ireland

http://www.corkcollegeofcommerce.ie
p +353-21-4222100 f 4275075

-- 
www.NoToTheDump.org

----------------------------------------------
Ian Spillane
Cork College of Commerce
Morrison's Island, Cork, Ireland

http://www.corkcollegeofcommerce.ie
p +353-21-4222100 f 4275075



More information about the ILUG mailing list