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


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Replace a string in all files under a directory and its subdirectories
# 1  
Old 12-11-2009
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 IP=192.168.0.10 in all the files under a certain directory and its subdirectories.

Below I search for the IP that I want to change:

Code:
find . -type f -print | xargs grep 192.168.0.4

./dir1/l.txt:192.168.0.4
./dir1/subdir/m.txt:abc 192.168.04xyz

But as you know the rest is the most important part; How to replace the found IP with the other one 192.168.0.10 , for the rest i have tried to use SED and AWK gsub but was unsuccessful.

I will appreciate your helps,
# 2  
Old 12-11-2009
Try:


Code:
find . -name "*" -type f -exec perl -i -ne 's/192.168.0.4/192.168.0.10/g;print;' {} \;

# 3  
Old 12-11-2009
another version

Code:
find . -type f -exec sed -i 's/192.168.0.4/192.168.0.10/g' {} \;

Note: expecting your sed to support -i option.

Last edited by thegeek; 12-11-2009 at 09:05 AM.. Reason: added note.
# 4  
Old 12-11-2009
Thanks all. Thegeek mate i believe your code should work but my environment solaris10 does not support "-i" option of SED. It didnt work. I can use the code of Dennis, but I would like to know which option should i use with SED?
# 5  
Old 12-13-2009
Quote:
Originally Posted by EAGL€
Thanks all. Thegeek mate i believe your code should work but my environment solaris10 does not support "-i" option of SED. It didnt work. I can use the code of Dennis, but I would like to know which option should i use with SED?
With absence of -i support with sed, you would need to try something like this:

Code:
for file in $(find . -type f)
    do
           sed 's/192.168.0.4/192.168.0.10/g' $file > $file.tmp
           mv $file.tmp $file
done

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Append string to all the files inside a directory excluding subdirectories and .zip files

Hii, Could someone help me to append string to the starting of all the filenames inside a directory but it should exclude .zip files and subdirectories. Eg. file1: test1.log file2: test2.log file3 test.zip After running the script file1: string_test1.log file2: string_test2.log file3:... (4 Replies)
Discussion started by: Ravi Kishore
4 Replies

2. Shell Programming and Scripting

Unzip all the files with subdirectories present and append a part of string from the main .zip files

Hi frnds, My requirement is I have a zip file with name say eg: test_ABC_UH_ccde2a_awdeaea_20150422.zip within that there are subdirectories on each directory we again have .zip files and in that we have files like mama20150422.gz and so on. Iam in need of a bash script so that it unzips... (0 Replies)
Discussion started by: Ravi Kishore
0 Replies

3. Shell Programming and Scripting

Help on Backing up all the files in the subdirectories under a parent directory

Hi, I am not too familiar with Unix scripting but I have to write code to find all the files under all the sub directories under a parent directory of unix location and move them to the corresponding Windows location. For eg: I have \home\sreenu\Files\ Under neath this I have multiple sub... (3 Replies)
Discussion started by: raj.sreenu
3 Replies

4. Shell Programming and Scripting

Script to find & replace a multiple lines string across multiple php files and subdirectories

Hey guys. I know pratically 0 about Linux, so could anyone please give me instructions on how to accomplish this ? The distro is RedHat 4.1.2 and i need to find and replace a multiple lines string in several php files across subdirectories. So lets say im at root/dir1/dir2/ , when i execute... (12 Replies)
Discussion started by: spfc_dmt
12 Replies

5. Shell Programming and Scripting

Find files only in current directory...not subdirectories

Hi, I have to find files only in the current directory...not in the sub directories. But when I use Find command ... it searches all the files in the current directory as well as in the subdirectories. I am using AIX-UNIX machine.Please help..I tried to use maxdepth..but it is not working in AIX. (2 Replies)
Discussion started by: vsachan
2 Replies

6. Shell Programming and Scripting

Bash: Gzip files in Directory and it´s Subdirectories

Hello dear Community, I have a task to wrtie a script which will gzip not zipped files in a directory and it´s subdirectories. I succeeded in gzippung the directory but not the subdirectories: #/bin/bash #go to the directory where to zip cd $1 #Zip unzipped files for i in `ls | xargs... (2 Replies)
Discussion started by: JamesCarter
2 Replies

7. UNIX for Dummies Questions & Answers

Find Files in a Directory Excluding Subdirectories

Hi, I have a filename Location.txt in a directory /abc. Similar name file is present in its subdirectory /abc/xyz. I want to find the file which is present only in /abc and not in /abc/xyz. Please any1 of u can provide a quick suggestion. Its very urgent. Thanks, Amol (2 Replies)
Discussion started by: Amol_Dicholkar
2 Replies

8. UNIX for Dummies Questions & Answers

How to remove directory with subdirectories and files?

I'm trying to remove several directories which contains sun-dirs and files inside. I used the command rm -r <dirname> But, it always ask "examine file in directory <dirname> yes/no?" line by line. So, i need to write "y" for every line. How can i skip this step and remove all directories with... (9 Replies)
Discussion started by: ppa108
9 Replies

9. Shell Programming and Scripting

search files in a directory and its subdirectories

Hello my friends, I need to write a simple shell bad file :D that search and delete a file it's name 'Microsoft.txt' in the current directory and its subdirectories? So can you help to guide me how i can write this shell, Just give me the beginning :o thank you. (1 Reply)
Discussion started by: Net-Man
1 Replies

10. 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
Login or Register to Ask a Question