There are times - many in fact - when I need to find a file, or multiple files containing a particular string. For example, I’m developing a web application, and need to find out which pages call a particular class method, say, all the files which call the getTopTenCDs() method - I can do this by opening a Terminal, and running grep (Global Regular Expression Print), with a couple of options:
grep -r -n 'getTopTenCDs()' /var/www/cdcollection/*
This will return a list of files, and the lines within those files, and the line numbers containing the string ‘getTopTenCDs()’ in the directory /var/www/cdcollection/. The -n option tells grep to output the line numbers, the -r option tells grep to search recursively through the sub-directories too, and * tells it to look in all files - which can be changed to *.php etc: /var/www/cdcollection/*.php
So, the output would be something along the lines of:
/var/www/cdcollection/viewcd.php:192: $topTen = $cd->getTopTenCDs();
/var/www/cdcollection/sidebar.php:215: $topTen = $cd->getTopTenCDs();
If I just want a list of files without the lines containing the search string, I can use the -l option:
grep -r -l 'getTopTenCDs()' /var/www/cdcollection/*
which would simply return:
/var/www/cdcollection/viewcd.php
/var/www/cdcollection/sidebar.php
As the name implies, grep uses Regular Expressions, and therefore the search string can contain the usual RegEx operatiors: . ? * + {n} etc. RegEx is out of scope for this post I’m affraid - there are dozens of great tutorials available on RegEx, and applying RegEx to grep.
One final point about grep: if the search string begins with a hyphen (minus sign, or whatever you want to call “-”), the search string needs to be preceded with the -e option:
grep -r -e '-starts with a hyphen' /var/www/cdcollection/*
so that grep doesn’t mistake the search pattern for an option! Forget the -e option, and you’ll get:
grep: invalid option -- $
Usage: grep [OPTION]… PATTERN [FILE]…
Try `grep –help’ for more information.
Also, remember the ever useful pipe | and output to file > commands. If the list printed by grep is huge, you can simply pipe it to more:
grep -r 'getTopTenCDs()' /var/www/cdcollection/* | more
or, if you want to save it to a file to peruse later:
grep -r 'getTopTenCDs()' /var/www/cdcollection/* > ~/grep_output.txt
Always useful.
Finally, remember to take a look at the grep man page:
man grep
Which contains a world of useful information, including a wealth of options I haven’t covered.






opens a GUI for installing the Internet Explorer binaries. Via the GUI, it is possible to select the IE versions to install (for IE 7, the option is in the Advanced section), along with the Adobe Flash plugin, and also the option to install Desktop and Menu icons/shortcuts. Unfortunately, I ran into a couple of problems running the GUI, and IE didn’t install correctly. Thankfully, however, it is also possible to run the 













Recent Comments