[ILUG] Re: script handling filenames with spaces

Ian Spillane iantheteacher at gmail.com
Sun Aug 19 11:28:43 IST 2007


Piping FIND into WHILE looks elegant. Like that solution myself; but for the
sake of argument I did once rely on this inelegant solution with temporarily
replacing spaces in filenames (to "{}") before looping:

    for file in $(find -name whatever | sed s/[\ ]/{}/g)
    do
        f=$(echo $file | sed s/{}/\ /g ) # return spaces
        cat "$f"
    done

If you have to use FOR then it's a solution - but wouldn't recommend. WHILE
is nicely reliable for filenames.

On 8/19/07, Brian Foster <blf at utvinternet.ie> wrote:
>
>   | From: Marcus Furlong <furlongm at hotmail.com>
>   | Date: Sat, 18 Aug 2007 22:05:07 +0100
>   |[ ... ]
>   | 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.
>
> since the OP is (probably) using the GNU bash(1)
> shell, a (possibly) easier to understand version
> of the above would be to use the (rare) $'...'
> syntax, which supports C-style escapes.  e.g.,
> to set IFS to be just a newline:
>
>     IFS=$'\n'
>
> without testing, it looks like with one additional
> fix the OP's script would handle any odd character
> (except, with this suggestion (or the tempfile or
> the pipe-equivalent), newline).  the OP's line:
>
>     mb2md -s "$j" -d "$MAILDIR$i/.$(basename $j)"
>
> should be:
>
>     mb2md -s "$j" -d "$MAILDIR$i/.$(basename "$j")"
>
> (note the added double-quotes around the argument
> to basename(1)).  or, as I noted earlier (which
> also contains a suggestion on handling newline),
> that line could be rewritten as:
>
>     mb2md -s "$j" -d "$MAILDIR$i/.${j##*/}"
>
> cheers!
>         -blf-
> --
> ▶ ▶  I AM CURRENTLY LOOKING FOR A JOB!  ◀ ◀ | Brian Foster
> Experienced (>25 yrs) software engineer:    |        Montpellier, FRANCE
> • Unix, Linux, embedded, design-for-test;  | Stop E$$o (ExxonMobile)!
> • Software/hardware co-design, debugging;  |     http:/www.stopesso.com
> • Kernels, drivers, filesystems, &tc;    Résumé (CV) & contact details:
> • IDL, automated testing, process, &tc.   http://www.blf.utvinternet.ie
> --
> 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


More information about the ILUG mailing list