Help With 'for' Loop

Drew Tomlinson drew at mykitchentable.net
Fri Oct 14 13:09:09 PDT 2005


On 10/14/2005 12:52 PM David Kirchner wrote:

>On 10/14/05, Drew Tomlinson <drew at 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
>  
>

Thank you for your reply.  I just tried 'while read i' and it works in 
this context.  I'll find out soon enough if I have the stdin trouble you 
mention.   I don't think I will but I'm very new to script writing.

What I am ultimately attempting is to recursively search a directory and 
then create symlinks with modified names in a new directory to files in 
the first directory.  For example, the first file found is 
"/multimedia/Pictures/1998 Christmas/April01.JPG".  After saving this 
string in 'i' (or maybe a more descriptive name), I want to manipulate 
the string to be "1998_Christmas-April01.JPG" and then issue 'ln -s 
"/multimedia/Pictures/1998 Christmas/April01.JPG" 
/newdir/1998_Christmas-April01.JPG'.  I've fiddled a bit with 'sed' and 
think I can make it work but I'm sure I'll be back with more questions.  :)

>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.
>  
>

Another good idea although I don't think this will work as well for my 
purpose.

Thanks again,

Drew

-- 
Visit The Alchemist's Warehouse
Magic Tricks, DVDs, Videos, Books, & More!

http://www.alchemistswarehouse.com



More information about the freebsd-questions mailing list