The UNIX and Linux Forums  

Go Back   The UNIX and Linux Forums > Top Forums > UNIX for Dummies Questions & Answers
Google UNIX.COM


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 !!

More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
find , grep james94538 UNIX for Dummies Questions & Answers 3 10-09-2008 06:03 PM
grep, find or awk? netrom UNIX for Dummies Questions & Answers 4 04-09-2008 02:03 PM
grep and find MEllis5 UNIX for Dummies Questions & Answers 1 04-07-2008 05:16 AM
find then grep flame_eagle Shell Programming and Scripting 7 03-13-2008 08:19 AM
find and grep sarwan High Level Programming 4 04-10-2006 04:05 AM

Closed Thread
 
Submit Tools LinkBack Thread Tools Search this Thread Display Modes
  #1  
Old 01-31-2001
Registered User
 

Join Date: Jan 2001
Location: The Netherlands
Posts: 4
Question

Hi,

I would like to know which files contain a certain string. If I use 'grep "string" *' only the working directory is being searched. I also want to search the subdirectories. When I use 'find . -type f -print |xargs grep "string" > dev/null' I get the message 'xargs: missing quote?'. What's up?
Should I use another command?

Thanks in advance.

Anika
Forum Sponsor
  #2  
Old 01-31-2001
mib mib is offline
Registered User
 

Join Date: Jan 2001
Location: Calicut
Posts: 228
grep -r "string" * will read all files under each directory recursively.

  #3  
Old 01-31-2001
PxT's Avatar
PxT PxT is offline
Registered User
 

Join Date: Oct 2000
Location: Sacramento, CA
Posts: 909
Which version of Unix does this work on? I have never encountered a grep that works like this. A portable solution is:

find . -exec grep string {} /dev/null \;
  #4  
Old 01-31-2001
Neo's Avatar
Neo Neo is offline
Administrator
 

Join Date: Sep 2000
Location: Asia Pacific
Posts: 4,493
The beauty of UNIX is the 10,000 ways to do these things. Here is how I do it (one way) when I want to go down the tree:

Code:
find * | grep string
It is not the typical way, but I know many old UNIX people who do it this way. Guess we are lazy to think or type

For example, if we want to search the entire file system for libc.so.2 we would do this:

Code:
find / | grep libc.so
This way we find all the libc.so files. If we did not care about case then:

Code:
find / | grep  -i libc.so
I also like using egrep with regular expression matching for more tricky or complex matches and searches.



  #5  
Old 01-31-2001
PxT's Avatar
PxT PxT is offline
Registered User
 

Join Date: Oct 2000
Location: Sacramento, CA
Posts: 909
However, this will only find you the filenames that contain the string. It will not search for the string <I>within</I> the file, which is what the original poster was asking about.
  #6  
Old 01-31-2001
Neo's Avatar
Neo Neo is offline
Administrator
 

Join Date: Sep 2000
Location: Asia Pacific
Posts: 4,493
Doing a find and then greping will certainly find the string within a string (in the file name) and works much better and faster. You are right PxT, this will not search the string within the file.

Code:
find / | grep lib
You will find a zillion occurances of the string 'lib' within a string. Here is a small sample and I've not even refined the grep or egrep (and just captured small output).

/usr/lib/gdk-pixbuf/loaders/libpixbufloader-png.so.1.0.0
/usr/lib/gdk-pixbuf/loaders/libpixbufloader-pnm.a
/usr/lib/gdk-pixbuf/loaders/libpixbufloader-pnm.la
/usr/lib/gdk-pixbuf/loaders/libpixbufloader-pnm.so.1.0.0
/usr/lib/gdk-pixbuf/loaders/libpixbufloader-ras.a
/usr/lib/gdk-pixbuf/loaders/libpixbufloader-ras.la
/usr/lib/gdk-pixbuf/loaders/libpixbufloader-ras.so.1.0.0
/usr/lib/gdk-pixbuf/loaders/libpixbufloader-tiff.a
/usr/lib/gdk-pixbuf/loaders/libpixbufloader-tiff.la
/usr/lib/gdk-pixbuf/loaders/libpixbufloader-tiff.so.1.0.0
/usr/lib/gdk-pixbuf/loaders/libpixbufloader-xpm.a
/usr/lib/gdk-pixbuf/loaders/libpixbufloader-xpm.la
/usr/lib/gdk-pixbuf/loaders/libpixbufloader-xpm.so.1.0.0
/usr/lib/gdk-pixbuf/loaders/libpixbufloader-bmp.so
/usr/lib/gdk-pixbuf/loaders/libpixbufloader-bmp.so.1
/usr/lib/gdk-pixbuf/loaders/libpixbufloader-gif.so
/usr/lib/gdk-pixbuf/loaders/libpixbufloader-gif.so.1

Yes, it does not search the actual file. I normally use PERL for that and not xargs. For some strange reason, xargs and I don't gel.... when I have to search files and strings within lots of files I use command line PERL.

[Edited by Neo on 01-31-2001 at 08:52 PM]
  #7  
Old 01-31-2001
mib mib is offline
Registered User
 

Join Date: Jan 2001
Location: Calicut
Posts: 228
Quote:
Originally posted by PxT
Which version of Unix does this work on? I have never encountered a grep that works like this. A portable solution is:

find . -exec grep string {} /dev/null \;


grep -r "string" * works pretty well on Linux(RH).

However this is not a comprehensive method. But I think this could be used for what poster is mentioned since he is using '*'(this cause grep read all files under each directory recursively).

But if he uses grep -r "www" html* will only recurse into subdirectories whose names starts with "html". so if there is a subdirectory whose name is not starts with "html" will be ignored even if it has the file that contain "www" string.

my grep version: GNU grep 2.3

Google The UNIX and Linux Forums
Closed Thread

Tags
linux

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes




All times are GMT -7. The time now is 08:55 AM.


Powered by: vBulletin, Copyright ©2000 - 2006, Jelsoft Enterprises Limited.
The UNIX and Linux Forums Content Copyright ©1993-2008. All Rights Reserved.Ad Management by RedTyger Visit The Complex Event Processing Blog

Content Relevant URLs by vBSEO 3.2.0