Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 14 Oct 2005 12:52:05 -0700
From:      David Kirchner <dpk@dpk.net>
To:        Drew Tomlinson <drew@mykitchentable.net>
Cc:        FreeBSD Questions <freebsd-questions@freebsd.org>
Subject:   Re: Help With 'for' Loop
Message-ID:  <35c231bf0510141252o506328d8qf68d80faa9c2330d@mail.gmail.com>
In-Reply-To: <435007F3.8000106@mykitchentable.net>
References:  <435007F3.8000106@mykitchentable.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On 10/14/05, Drew Tomlinson <drew@mykitchentable.net> wrote:
> Sorry to be such a pest today.  I'm working on a sh script that uses a
> for loop.  To test, I've written the following:
>
> for i in `/usr/bin/find /multimedia/Pictures -iname "*.jpg" -or -iname
> "*.gif" -print`
>         do
>         echo -e "\n$i"
> done
>
> The first line 'find' returns is "/multimedia/Pictures/1998
> Christmas/April01.JPG"
>
> Yet 'echo $i' only returns "/multimedia/Pictures/1998", stopping at the
> first space.  Is it possible to get 'i' to represent the whole string
> that 'find' returns?  If so, how?

'while read i' will do what you want, but may cause issues with
programs that expect to be able to read from stdin within the loop.

find $findstuff | while read i
do
    echo $i
done

You can also try something like:

find $findstuff -exec echo {} \;

(where $findstuff is your -iname conditionals). {} is replaced by the
files or directories found by find, and \; is necessary to terminate
the -exec argument.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?35c231bf0510141252o506328d8qf68d80faa9c2330d>