0

I am stuck up with a problem I have a line 'something' in some file. In which file is this line that I have forgotten. In the entire root file system I would like to find out which file and where is this line. So how can I go for this.I have used find but when I used find then I knew the name of file in this case I do not know name of file also. It is a Ubuntu server 10.04 So what can I do to find out which file has this string.

Registered User
  • 1,463
  • 5
  • 18
  • 37

4 Answers4

4

A simple bruteforce solution would be:

find / -type f -exec grep -H 'some string' {} \;

(the -H option to gnu grep causes it to return the filename).

However you'd probably benefit from spedning the time writing a smarter script which ignores stuff like binary files, executables (non-script) etc.

Registered User
  • 1,463
  • 5
  • 18
  • 37
symcbean
  • 21,009
  • 1
  • 31
  • 52
  • 2
    If you do this, make sure you add `-xdev` or otherwise avoid going into /proc and /sys; you can search through those for a **really** long time without finding anything useful. – MadHatter Feb 24 '11 at 14:02
  • 1
    Yeah, I really recommend giving the `-I` flag to grep, so that binary files are treated as non-matching. Really cuts down on the false positives. – Christopher Karel Feb 24 '11 at 15:16
  • Using `xargs` or `-exec ... +`, if your `find` supports it, will speed things up. – Dennis Williamson Feb 24 '11 at 15:38
3

I always use:

find / -xdev | xargs grep "string"

That'll give you a list of all of the matched strings along with the actual files they're in.

womble
  • 96,255
  • 29
  • 175
  • 230
Doug
  • 646
  • 3
  • 8
1

heh well there are a lot of files

maybe if you could narrow it down to some time when you last accessed that file and try

find / -xdev -type f -atime -X -exec grep -H 'string' {} \;

where X is number of days from today backwards in which you are sure you accessed the file

Hrvoje Špoljar
  • 5,245
  • 26
  • 42
0

Perhaps something like ' grep -iR "text to find" * ' run from the root will do it.

uSlackr
  • 6,412
  • 21
  • 37