Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 24 Aug 2008 15:42:28 -0500
From:      Derek Ragona <derek@computinginnovations.com>
To:        David Banning <david+dated+1219918782.39167f@skytracker.ca>, questions@freebsd.org
Subject:   Re: space char shell script problem
Message-ID:  <6.0.0.22.2.20080824153456.025ac978@mail.computinginnovations.com>
In-Reply-To: <20080823101941.GA42601@skytracker.ca>
References:  <20080823101941.GA42601@skytracker.ca>

next in thread | previous in thread | raw e-mail | index | archive | help
At 05:19 AM 8/23/2008, David Banning wrote:
>I am running into a problem with the space character in filenames.
>For instance, If I want to run the script;
>
>for x in `ls`
>do
>   echo $x
>done
>
>then filenames that have a space in them ie: "john smith.jpg"
>are processed by my script as two names, "john" and "smith.jpg".
>
>What is the best way to deal with this type of space problem in the shell?
>
>I know that file names in quotes solves some problems but I can't tranfer
>that to my script.

Depending on what your script is doing, I would use an intermediate file 
and awk.

Something like:
ls >/tmp/mytempfile
cat /tmp/mytempfile | awk '{ print $0 }'

if you are looking for something special add grep to the mix:
cat /tmp/mytempfile | awk '{ print $0 }'|grep -i [some name pattern]
rm /tmp/mytempfile

You can save the results to another temporary file for more processing, or 
use awk more to create commandlines to execute in another script file such as:
cat /tmp/mytempfile | awk '{ print $0 }'|grep -i [some name pattern] | awk 
'{printf"cp %s /backup/backupdir\n", $0)}' >/tmp/mycopyscript

chmod +x /tmp/mycopyscript
/tmp/mycopyscript

So depending on what your original script was doing, this method may work 
for you.

         -Derek

-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.




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