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

Re: sed, bash script



At Thu, 18 Sep 2003 12:16:06 +0200,
Torsten Reuss wrote:
> 
> csj wrote:
> 
> >At Tue, 16 Sep 2003 17:08:51 +0200,
> >Matthias Czapla wrote:
> >  
> >
> >>On Tue, Sep 16, 2003 at 07:39:39AM -0700, Ric Otte wrote:
> >>    
> >>
> >>>Hi, I would like to run all of the files in some directories
> >>>through sed, in order to edit the files.  I can do it for
> >>>individual files by typing: cat filename|sed command>filename
> >>>But that requires me to run that command for each file.  I
> >>>was wondering if anyone could 1) give me a reference to a
> >>>simple bash tutorial that will explain how to set up a script
> >>>to do things like this,
> >>>      
> >>>
> >>http://www.tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html
> >>
> >>    
> >>
> >>>and 2) tell me how to do it.
> >>>      
> >>>
> >>for f in *; do tmp=`tempfile`; cat $f | sed command > $tmp ; mv $tmp $f; done
> >>    
> >>
> >
> >Is there anything intrinsically wrong with:
> >
> >find directory -name "*.foo" | xargs sed -i -f sed_script
> > 
> >  
> >
> One difference not mentioned yet is that the "for f in" solution will 
> work on files in the current directory while the "find" solution will 
> recurse through subdirectories. If using find I would also add a "-type 
> f" so you don't end up trying to run sed on directories.

sed -i -f sed_script *.foo

(assuming *.foo to be all -type f)



Reply to: