Find, replace, file path in multiple files for Solaris 10

Login or Register for Dates, Times and to Reply

 
Thread Tools Search this Thread
Homework and Emergencies Emergency UNIX and Linux Support Find, replace, file path in multiple files for Solaris 10
# 1  
Find, replace, file path in multiple files for Solaris 10

Guys I have a big issue that I need to get fixed ASAP however I can not seem to find a way to do it. We started to use zones with Solaris 10 at work and we moved a zone from a SIT box to a DEV box. Problem is the software we have installed is looking at a /lcl/sit/apps/ path and it needs to look at /lcl/dev/appsl path instead.

I know how to do a search and replace of multiple files in a directory and all sub dirctories with PERL using....

Code:
perl -e "s/sit/dev/g;" -pi $(find /lcl/dev/apps/Tivoli/test/test -type f)

The problem with doing it this way is that it uses / characters and since I need to replace part of a path that causes an issue. Plus any word in any of the files that would have "sit" would be replaced with "dev".

I need to find a way through something like a bash script or something that can run on Solaris 10 that can do a search of all files contents from a specific directory and all sub directory for...

Code:
/lcl/apps/sit

And replace

Code:
/lcl/apps/dev

This way event it if found a word like for example "sitting" it would not replace it with "devting"

I hope I am giving enough detail here :-) I have been on Goolge all morning and I just can not seem to find a way that works with Solaris 10.

Thank you in advance!
# 2  
I guess you can just escape slashes with backslashes in perl like:

Code:
perl -e "s/\/lcl\/apps\/sit/\/lcl\/apps\/dev/g;" -pi $(find /lcl/dev/apps/Tivoli/test/test -type f)

?
# 3  
Will that also follow all sub directories? That was the one part I was not sure on. I need it to. Thank you very much for the help.

---------- Post updated at 04:08 AM ---------- Previous update was at 04:02 AM ----------

Well that might not work. I am getting....
Code:
:/lcl/dev/apps/Tivoli>perl -e "s/\/lcl\/sit\/lcl\/dev/g;" -pi $(find /lcl/dev/apps/Tivoli/tipv2 -type f)
bash: /usr/bin/perl: Arg list too long

Not shocked as there are a ton of files that need to have this path replaced. Any ideas guys? Thank you again.
# 4  
You could hand over the found files with xargs to perl:
Code:
find /lcl/dev/apps/Tivoli/test/test -type f| xargs -n1 -I {} perl -e "s/\/lcl\/apps\/sit/\/lcl\/apps\/dev/g;" -pi {}

---------- Post updated at 03:11 PM ---------- Previous update was at 02:27 PM ----------

Quote:
Will that also follow all sub directories?
find is recursive, yes.
This User Gave Thanks to zaxxon For This Post:
# 5  
That did the trick. Thank you! Big help.
# 6  
Are you sure you want to replace a path in a ton of files? That's a bit dangerous I'd say. Can't you just set-up a symlink so that the old path is still valid?

Regards,
Mark.
Login or Register for Dates, Times and to Reply

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #446
Difficulty: Medium
The Large Hadron Collider experiments at CERN run on Scientific Linux.
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Find and replace from multiple files

Hello everybody, I need your help. I have a php site that was expoited, the hacker has injected into many php files a phishing code that was discovered and removed in order to have again a clean code. Now we need to remove from many php files that malware. I need to create a script that find and... (2 Replies)
Discussion started by: ninocap
2 Replies

2. Shell Programming and Scripting

Find and replace the path value in files, pattern is not full known.

Hi, I need to do find and replace, but the pattern is not full known. for example, my file has /proj/app-d1/sun or /data/site-d1/conf here app-d1 and site-d1 is not constant. It may be different in different files. common part is /proj/xx/sun and /data/xxx/conf i want to find where ever... (6 Replies)
Discussion started by: rbalaj16
6 Replies

3. Shell Programming and Scripting

Find and replace in multiple files

Hi, I have php files in main dir and sub dir's as well. I need to find "new mysqli('localhost', 'System', 'xxxxxx', 'System', '3306');" and replace as "new mysqli('localhost', 'unx_sys', 'yyyy', 'unx_sys', '3306');" I tried like: sed 's/new mysqli\(*\)\;$/new... (1 Reply)
Discussion started by: ashokvpp
1 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. UNIX for Advanced & Expert Users

linux find and replace in multiple files

Is there a reason why all of these examples of linux find and replace in multiple files use find and grep to pipe into sed or perl. Why not just use sed or perl directly with something like this? sed -i 's/echo/burnbaby/g' booboo*... (2 Replies)
Discussion started by: cokedude
2 Replies

6. UNIX for Dummies Questions & Answers

how to find and replace strings in multiple files

Hi All, Iam new to unix, I need to find string and replace it in the file name. Like text_123_0.txt,text_123_1.txt,text_123_2.txt. I need to search 123 and replace it with 234 . Is there any unix command to replace them in single command since i have 5 directories. So i need to go each and every... (0 Replies)
Discussion started by: etldeveloper
0 Replies

7. Shell Programming and Scripting

Find and replace string from file which contains variable and path - SH

e.g. /home/$USER/.config replace it with "" (empty) Is this possible? I think you should play a bit with sharps ## and sed:b: (2 Replies)
Discussion started by: hakermania
2 Replies

8. Shell Programming and Scripting

awk find and replace in multiple files

Hi I use the following code to replace . with N in my files and keep both versions. awk '{ gsub(/\./,"N"); print }' file_0001.txt > path/to/new/dir/file_0001.txt I need help on how to apply the code to 100 files instead of doing them one file at a time. The files are labeled... (7 Replies)
Discussion started by: jdhahbi
7 Replies

9. UNIX for Dummies Questions & Answers

Find and replace a string in multiple files

I used the following script cd pathname for y in `ls *`; do sed "s/ABCD/DCBA/g" $y > temp; mv temp $y; done and it worked fine for finding and replacing strings with names etc. in all files of the given path. I'm trying to replace a string which consists of path (location of file) ... (2 Replies)
Discussion started by: pharos467
2 Replies

10. Shell Programming and Scripting

Find and replace files in multiple folders

Hi there, I would like to write a script to automate the copy and renaming of files in multiple dir. I have a generic file named s253e.prb and would like to copy this to multiple dir and rename it. Example: Dir is AL-M1 and the prb file name is AL-M1.prb. I would like to be able to... (6 Replies)
Discussion started by: lodey
6 Replies

Featured Tech Videos