![]() |
|
|
|
|
|||||||
| Forums | Portal | Register | Rules & FAQ | Contribute | Members List | Arcade | Search | Today's Posts | Mark Forums Read |
| UNIX for Dummies Questions & Answers If you're not sure where to post a UNIX or Linux question, post it here. All UNIX and Linux newbies welcome !! |
|
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Recursive FTP -- here at last. | Perderabo | Shell Programming and Scripting | 46 | 06-19-2008 01:40 PM |
| recursive grep issue | Mace | UNIX for Dummies Questions & Answers | 1 | 08-11-2006 04:39 AM |
| recursive GREP ? | alan | UNIX for Dummies Questions & Answers | 3 | 08-22-2003 12:15 AM |
| grep recursive directories | jagannatha | UNIX for Dummies Questions & Answers | 8 | 07-24-2003 01:00 PM |
| Recursive FTP | aslamg | UNIX for Dummies Questions & Answers | 1 | 03-08-2001 12:27 AM |
|
|
LinkBack | Thread Tools | Display Modes |
|
|||
|
Jim, thanks for spelling it out for me. I got it to work but it's not producing the results I need. The results going to the results.txt are the actual contents of the files, and they are not matching my string fully. I need the files that contain the strings I'm searching - which I realize I didn't state clearly initially.
The 2 scripts I've come up with are: for h in `cat strings.txt`; do echo "**$h**" ; grep -rl $h /path/to/search/ >> results.txt ; done and for h in `cat strings.txt`; do find /path/to/search/ -name \*xml -exec grep -l "$h" {} \; >> results.txt ; done The grep and the find are working fine, it's the `cat` that is giving me trouble. The strings in strings.txt are getting broken up into smaller strings - which I verified by putting that echo in on the grep script. Example of string in strings.txt is: /sample/string in/strings file/title.jsp The cat (and grep -f) is breaking it up into: /sample/string in/strings file/title.jsp I've tried putting the string in strings.txt in both single and double quotes: "/sample/string in/strings file/title.jsp" '/sample/string in/strings file/title.jsp' and have also tried putting single and double quotes in the scripts: for h in "`cat strings.txt`"; do echo "**$h**" ; grep -rl "$h" /path/to/search/ >> results.txt ; done And the echo still shows the string being split into 3 smaller strings. Thanks upstate boy Last edited by upstate_boy; 05-17-2008 at 07:16 AM. |
| Forum Sponsor | ||
|
|
|
|||
|
Thanks for the suggestion Franklin52. I do see the echo showing the full string now, but the results of the grep are off.
If I do the grep manually - I get 3 files returned which is correct. If I use my script - I get 1588 files returned. Script now: OIFS=$IFS IFS="" for h in `cat strings.txt`; do echo $h ; grep -rl "$h" /path/to/search/ >> results.txt ; done IFS=$OIFS |
|
|||
|
I tried grep -rl -f strings.txt /path/to/search/* > result.txt
Same problem, the string in strings.txt is being split up: /sample/string in/strings file/title.jsp I'm guessing it is being split into these 3 strings: /sample/string in/strings file/title.jsp I know that if I do this grep, I get only 3 results as opposed to the 1588 results I get with the grep -rl -f strings.txt method. grep -rl "/sample/string in/strings file/title.jsp" /path/to/search/* Thanks upstate boy Last edited by upstate_boy; 05-17-2008 at 12:51 PM. |
|
|||
|
Era - I'm not sure how to inspect in the way you are asking but I've deleted the stings.txt and created a new one with vi adding the string back - no copy/paste. When trying grep -rl -f strings.txt I'm still seeing the same behavior as already described.
Thanks upstate boy |
|||
| Google UNIX.COM |
| Tags |
| grep, grep recursive, recursive grep |
| Thread Tools | |
| Display Modes | |
|
|