HPUX find string in directory and filetype and replace string


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting HPUX find string in directory and filetype and replace string
# 8  
Old 12-14-2012
Strange. Both of the solution work for me . Iam working on Linux red hat. What error you got for that
Code:
for loop

solution.
# 9  
Old 12-14-2012
Ah that could be why I am on HPUX
# 10  
Old 12-14-2012
can you try
Code:
sed -e

rather than
Code:
-i

.However it will not update the file directly. Can you try this.
# 11  
Old 12-14-2012
Only GNU sed has -i option.
The previous code should have worked; the for loop scans the current directory.
"find" scans the current directory *tree* (recursively).
You can replace the for loop by a while loop with read, and connect with a pipe:

Code:
#!/bin/sh
find . -type f -name "*.py" -print |
while read fp
do
 cp -p "$fp" "$fp".old &&
 sed 's/Sept_2012/Oct_2012/g' "$fp".old > "$fp" &&
 rm -f "$fp".old
done

Note the safety enhancements:
Always quote "$variables" with unknown contents!
cp to a backup - mv breaks links!
An && at the end of a command only continues with the next command if successful.

Last edited by MadeInGermany; 12-14-2012 at 10:40 AM..
# 12  
Old 12-14-2012
Excellent the code works when I put it into a shell script only a couple of problems.

1) I didn't know how to get a log of the files changed unless I ran the command below
2) All the .py files it searched got touched so I get today's time stamp on the directories it looks in
Code:
#!/bin/sh
find . -type f -name "*.py" -print |
while read fp
do
 cp -p "$fp" "$fp".old &&
 sed 's/Sept_2012/Oct_2012/g' "$fp".old > "$fp" &&
 rm -f "$fp".old
done

Code:
find . -name "*.py"  -exec grep "Oct_2012" {} \;


Last edited by pure_jax; 12-14-2012 at 11:48 AM..
# 13  
Old 12-17-2012
Sorry I thought you want all files changed.
Replaced -print by -exec grep -l ...
that prints only the matching file names:

Code:
#!/bin/sh
search="Sept_2012"
replace="Oct_2012"
find . -type f -name "*.py" -exec grep -l "$search" {} \; |
while read fp
do
 echo "$fp"
 cp -p "$fp" "$fp".old &&
 sed "s/$search/$replace/g" "$fp".old > "$fp" && 
 rm -f "$fp".old
done

# 14  
Old 12-17-2012
Hi MadeInGermany,

Yes you are right we should always use the quotes for the variable
Code:
" "

.I just forget that in my reply. Also thanks for giving some tips on using
Code:
mv

and
Code:
cp

.Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Find and Replace string in UNIX

Hi All, Greetings. I have a .dat file which somewhere in its content contains symbol ""^ I want to replace it with "^ I tried with SED command but could not achieve what i wanted sed -e "s/'""^'/'"^'/ig" filename.dat (5 Replies)
Discussion started by: MaddyS
5 Replies

2. Solaris

How to find and replace a string?

Dear All I need to find and replace a string in a set of files. I try as : #find / -name "*"|xargs grep "Tektra"|grep -v "Tektra GSM BTS" But it doesn't work. It just finds the string in the files. I need to find and replace it.Can you please let me know how to correct it? Thank you (2 Replies)
Discussion started by: hadimotamedi
2 Replies

3. Shell Programming and Scripting

find string and replace with string in other file

Dear all, I need your help, I have file like this: file1:23456 01910964830098775635 34567 01942809546554654323 67589 26546854368698023653 09778 58716868568576876878 08675 86178546154065406546 08573 54165843543054354305 . .file2: 23456 25 34567 26 67589 27 (2 Replies)
Discussion started by: attila
2 Replies

4. Shell Programming and Scripting

sed or awk command to replace a string pattern with another string based on position of this string

here is what i want to achieve... consider a file contains below contents. the file size is large about 60mb cat dump.sql INSERT INTO `table1` (`id`, `action`, `date`, `descrip`, `lastModified`) VALUES (1,'Change','2011-05-05 00:00:00','Account Updated','2012-02-10... (10 Replies)
Discussion started by: vivek d r
10 Replies

5. Shell Programming and Scripting

Replace last 2 folder directory string with sed

Hi guys, I´m trying to replace the 2 last folders name in a list of directories with a new string, but I´m don´t know which regex to apply. Directories list: C/my user/documents/games & music C/my user/documents/photos 09-24-2008 C/my user/settings/config ?1_2 * The last folder may have... (11 Replies)
Discussion started by: cgkmal
11 Replies

6. Shell Programming and Scripting

Replace a string in all files under a directory and its subdirectories

Hello Friends, I've been trying to write a script which finds a string and change it with another string. For this i want to search all files (with its arguments) under a spesific directory and its subdirectories. For example lets assume i want to replace an IP= 192.168.0.4 with another... (4 Replies)
Discussion started by: EAGL€
4 Replies

7. Shell Programming and Scripting

Find the position of a string and replace with another string

Hi, I have a file named "Test_2008_01_21" The file contains a string "manual" that occurs many times in the file How can i find the positions of the string "manual" in the file Ex: if the string " manual " occurs three times in the file. i want to replace the second occurance of string... (6 Replies)
Discussion started by: bab123
6 Replies

8. Shell Programming and Scripting

find and replace string in a directory files

Hi, I have a directory has DIR1 and the D1 directory has 200+ files. I want change the string from "Bangalore" to "Bangaluru" in all files in the D1 directory. Thanks (2 Replies)
Discussion started by: koti_rama
2 Replies

9. UNIX for Dummies Questions & Answers

Find and replace character in a string

Hi all, My problem is the following: I've a script that must list all files in a directory and write this information in a text file. I've tried to get the list through ls command and then write it using msgecho msgecho "`ls $PATH_APS_JOB_ORA`" This works good but the created string... (7 Replies)
Discussion started by: callimaco0082
7 Replies

10. Programming

how to find and replace string

hi I wanted to find this char " ^M " in my file and replace it with blank space. I am using Unix system. If i give command " :%s/^M//gc " it wont work so can anyone tell what is command to find and replace thankx (3 Replies)
Discussion started by: mridula
3 Replies
Login or Register to Ask a Question