How-To question for the NC*SA brain trust...

John Strickler jstrick at mindspring.com
Tue Mar 16 18:45:16 EST 2004


I just tried with HP-UX v11 sh (Posix, not Bourne), and it also works great.

To wit, I created the following file:

-----------listfile---------------
apple pie
cherry tart
apple brown betty
--------------------------------
then executed
    while read x
    do
         touch "$x"
    done < listfile

this created the 3 files "apple pie", "cherry tart", and "apple brown betty", complete with spaces

then I executed

    while read x
    do
        chmod 777 "$x"
    done < listfile

and it changed the 3 files. It does not break when there are spaces in the file names. 

-----Original Message-----
From: "Lance A. Brown" <brown9 at niehs.nih.gov>
Sent: Mar 16, 2004 6:29 PM
To: John Strickler <jstrick at mindspring.com>, 
	NC*SA Discussion List <ncsa-discussion at ncsysadmin.org>
Subject: Re: How-To question for the NC*SA brain trust...

On Tue, 2004-03-16 at 17:11, John Strickler wrote:
> Another simple approach is to use the shell's (bash or ksh) *read* command and put quotes around the variable
> 
> while read $x
> do
>      chmod o-w "$x"
> done < list
> 
> This performs one chmod per file, unlike the xargs-type solutions, but has the advantage of being very tidy

This breaks when there are spaces in the file names, as we have here. 
The read command will pull apart each input line at the space and return
the chunks.

You would want to play with IFS (in sh style shells) if you want this
syntax so the separator doesn't include spaces.

--[Lance]

> 
> -----Original Message-----
> From: "Lance A. Brown" <brown9 at niehs.nih.gov>
> Sent: Mar 16, 2004 4:47 PM
> To: NC*SA Discussion List <ncsa-discussion at ncsysadmin.org>
> Subject: Re: How-To question for the NC*SA brain trust...
> 
> What about something like:
> 
> cat $list | sed -e 's/^/"/' -e 's/$/"/' | xargs chmod o-w
> 
> This results in fewer chmod commands being executed.
> 
> I often use that sed statement while doing finds and whatnot in
> directory spaces in samba shares, etc.
> 
> --[Lance]
-- 
Lance A. Brown
SysAdmin Task
LMIT ITSS Contract for 
National Institute of Environmental Health Sciences
919.361.5444x420

_______________________________________________
ncsa-discussion mailing list
ncsa-discussion at ncsysadmin.org
http://www.ncsysadmin.org/mailman/listinfo/ncsa-discussion



More information about the ncsa-discussion mailing list