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.
Asked
Active
Viewed 2,952 times
4 Answers
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
-
2If 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
-
1Yeah, 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
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