The pc technician offers help with computer 

problems and virus removal got
a
virus?
pc technician says that even windows 7 needs a good anti-virus program, you can get free software 

from the
sources given on this page
virus help

PC Technician code to change text in multiple files







In this code example - I wanted to make global changes to multiple files in a directory structure using unix commands. This involves the use of two commands - "find" and "sed". I wanted to write a general shell script to accomplish this. I found one example that used a combination of first getting a list of files in a directory and its directory substructure and then processing this list with a "do" loop which used the sed command. I then came up with a simpler way to do this without the "do" loop which also involved creating a temp file and then moving it back to the original file (seems a bit clumsy).

So here's what I did - in the shell script.

1. Read in the starting directory where I wanted to change the files.
2. Read in the text strings - the old the replacement strings.
3. Develop the command to perform the work.
   This is described in the code example below: 




P.S.
By the way, when I tried the global changes using the
code based on first getting the list of files and then the
do-loop to process the list  -  caused a problem.  See the code
below:
 
--------------------------------------------------------------------------------- 
list=`find $FULL_DIR   -type f ` 
for file in ${list} 
do 
#In the command below -  the colon is a delimiter in the sed command
# and obviously the old and new text cannot have this character in the strings.
 
sed s:"${OLDTEXT}":"${NEWTEXT}":g ${file} > /tmp/temp.txt 
mv /tmp/temp.txt ${file} 
done 
 
---------------------------------------------------------------------------------- 
 
 
What happened was the "mv" command changed file permissions
on the .cgi and .pl  files to read only , ie,  it lost the execute bit on these 
files as a result of the creation of the temp file and the subsequent move command. 
So I then tried  a global change to these files using the "chmod"
command, ie,  I tried this:

chmod -R 755 *.cgi
 
which theorectically should work to recursively change all files 
ending  in .cgi to mode 755 for the current directory and below.
Well it didn't, so I then tried a variation - which is coded as shown:

find . -type f -name '*.cgi' -exec chmod 755 {} \;  

And this worked just fine. Note the similarity between this command and 
the find/sed command in the shell script in the white box above.


If you need more info on shell scripting try HERE - Great tutorial site.



PCTECHNICIAN.COM
Cool Counters @ pctechnician.com