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.

4 Answers 4

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.

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.

3
  • 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, 2011 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. Feb 24, 2011 at 15:16
  • Using xargs or -exec ... +, if your find supports it, will speed things up. Feb 24, 2011 at 15:38
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

0

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

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .