![]() |
Hello and Welcome from United States to the UNIX and Linux Forums! Thank You for Visiting and Joining Our Global Community.
|
|
google unix.com
|
|||||||
| Forums | Register | Forum Rules | Links | Albums | FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
| UNIX for Advanced & Expert Users Expert-to-Expert. Learn advanced UNIX, UNIX commands, Linux, Operating Systems, System Administration, Programming, Shell, Shell Scripts, Solaris, Linux, HP-UX, AIX, OS X, BSD. |
More UNIX and Linux Forum Topics You Might Find Helpful
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Using Find w/ Grep? | beefeater267 | Shell Programming and Scripting | 2 | 01-24-2009 07:05 AM |
| Help using find/grep | Rally_Point | UNIX for Dummies Questions & Answers | 4 | 12-18-2008 03:34 AM |
| find , grep | james94538 | UNIX for Dummies Questions & Answers | 3 | 10-09-2008 09:03 PM |
| grep, find or awk? | netrom | UNIX for Dummies Questions & Answers | 4 | 04-09-2008 05:03 PM |
| grep and find | MEllis5 | UNIX for Dummies Questions & Answers | 1 | 04-07-2008 08:16 AM |
![]() |
|
|
LinkBack | Thread Tools | Search this Thread | Rate Thread | Display Modes |
|
|
|
||||
|
Example:
I have folders 456 abc xyz 123 a1b I dont want to find in 123 and a1b. From rest folder i need to find in html and php files. find ./ -path "123" -prune and a1b find ./ -iname "*.htm*" -o -iname "*.shtm*" -o -iname "*.php" Now while finding i need to grep multiple words and then replace it one word. example: grep (blue\|red\|yellow\|orange) then put the result to text file. After that i will pass a sed command and replace all the colorblack My thought is something like this: find ./ -path "123" -prune -o -path "a1b" -o -iname "*.htm*" -o -iname "*.shtm*" -o -iname "*.php" | xargs grep (blue\|red\|yellow) > temp.txt for x in cat temp.txt do; sed -i 's/blue/black/g' $x; done i have arround 10k files to replace, Can any one make it work? |
|
||||
|
Hi nxvir,
you can prune them like so, but then find will skip the content of those directories yet still list the directories themselves which will then still be passed as a parameter to xargs. Code:
find ./ -path "*123" -prune -o -path "*a1b" -prune -o -iname "*.shtm" -o -iname "*.htm" -o -iname "*.php" Code:
find ./!(a1b|123) -iname "*.shtm" -o -iname "*.htm" -o -iname "*.php" Code:
egrep -l "blue|red|yellow" Regarding the for statement: Code:
for x in $(cat temp.txt) do Last edited by Scrutinizer; 10-18-2009 at 01:40 AM.. |
|
||||
|
i need to put the find result to text file is this right
Code:
xargs egrep -l "blue|red|yellow" > temp.txt then after that for x in `cat temp.txt` do; sed -i 's/blue/black/g' $x; sed -i 's/yellow/black/g' $x; sed -i 's/red/black/g' $x; done Last edited by nxvir; 10-19-2009 at 08:05 AM.. |
|
||||
|
while run both given find command i get error
Code:
find ./!(a1b|123) -iname "*.shtm" -o -iname "*.htm" -o -iname "*.php" for x in $(find ./!(a1b|123) -iname "*.shtm" -o -iname "*.htm" -o -iname "*.php" | xargs egrep -l "blue|red|yellow" ) wat may have caused this? This command worked but as told by "Scrutinizer" it is true, still lists the directories which we ignored. Code:
find ./ -path "*123" -prune -o -path "*a1b" -prune -o -iname "*.shtm" - o -iname "*.htm" -o -iname "*.php" Code:
find ./ -path "*123" -prune -o -path "*a1b" -prune -o -print -o -iname "*.shtm" -o -iname "*.htm" -o -iname "*.php" Last edited by nxvir; 10-19-2009 at 08:09 AM.. |
![]() |
| Bookmarks |
| Thread Tools | Search this Thread |
| Display Modes | Rate This Thread |
|
|