Search for a file with specific content
Posted on March 08, 2007 in Linux
Found a site which describes this quite good (german):
http://www.linuxfocus.org/Deutsch/September1998/article64.html
Lets do some comparison and search the whole root directory for the string "PAGER":
Lazy as i am i first started with the shortest possibility:
grep "PAGER" find / -type f -print
Does not find anything for me, zsh gives me an error "argument list too long"
Here some explanation why this is so:
http://michael-prokop.at/blog/2007/02/26/argument-list-too-long/
getconf ARG_MAX shows us the limit of 131072 characters allowed passing the command-line at once.,
So lets try something else, this time using xargs, which breaks the command down below 131072 characters:
find / -type f -print | xargs grep "PAGER"
Little bit better now, but, when i come across files with spaces in the filename i get problems, so lets try it again:
find / -type f -print0 | xargs -0 grep "PAGER"
ok, this finally works. Somewhere someone shouted out that the parameters -print0 and -0 are not posix compliant, so for you purists out there another working solution:
find / -type f -exec grep "PAGER" /dev/null {} \;