[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