[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Handle paths with spaces



On Thu, Jan 07, 2010 at 03:38:23PM +0530, Foss User wrote:
> This is my directory structure:
> .
> |   a.sh
> |   a.txt
> |
> +---foo bar
> |       b.txt
> |
> +---santa
> |   |   c.txt
> |   |
> |   \---humpty dumpty
> |           e.txt
> |
> \---test
>         d.txt
> 
> I want to do some operation on each file ending with .txt. However,
> this script wouldn't work because in each iteration it gets one word
> from the output of find.
> 
> Script:
> 
> for file in `find -name "*.txt"`
> do
>     echo file: $file
> done
> 
> Execution:
> 
> $ sh a.sh
> file: ./a.txt
> file: ./foo
> file: bar/b.txt
> file: ./santa/c.txt
> file: ./santa/humpty
> file: dumpty/e.txt
> file: ./test/d.txt
> 
> You can see how ./santa/humpty dumpty/e.txt has been broken into two
> iterations. Any way to resolve this?

do man bash or man sh or man dash which ever you are using and look up
IFS


oIFS="$IFS"
IFS='
'

for file in `find -name "*.txt"`
do
    echo file: $file
done

IFS="$oIFS"

I think should work


> 
> 

-- 
"In other words, I don't think people ought to be compelled to make the decision which they think is best for their family."

	- George W. Bush
12/11/2002
on smallpox vaccinations, Washington, D.C.

Attachment: signature.asc
Description: Digital signature


Reply to: