Tuesday, January 24, 2012

Linux - Find string in files.

SkyHi @ Tuesday, January 24, 2012
find . | xargs grep 'string' -sl
The -s is for summary and won't display warning messages such as grep: ./directory-name: Is a directory
The -l is for list, so we get just the filename and not all instances of the match displayed in the results.
Performing the search on the current directory I get:

./javascript_open_new_window_form.php
./excel_large_number_error.php
./linux_vi_string_substitution.php
./email_reformat.php
./online_email_reformat.php
./excel_find_question_mark.php
./linux_find_string_in_files.php
./excel_keyboard_shortcuts.php
./linux_grep.php
./md5_unique_sub_string.php
./email_reformat_token.php
./excel_password_protect.php
./mysql_date_calulation.php
./md5_string.php
./php_javascript_passing_values_to_new_window_in_url.php
./php_math_on_string/math_on_string_form.php
./guide.php
./excel_large_number_paste.php
./piping_commands_find_grep_sed.php
./google-search-for-seo-research.php
./filename_conversion_form.php
./linux_find_string_files.php
I find this useful for just quickly seeing which files contain a search time. I would normally limit the files searched with a command such as :

find . -iname '*php' | xargs grep 'string' -sl
Another common search for me, is to just look at the recently updated files:

find . -iname '*php' -mtime -1 | xargs grep 'string' -sl
would find only files edited today, whilst the following finds the files older than today:

find . -iname '*php' -mtime +1 | xargs grep 'string' -sl

REFERENCES
http://www.liamdelahunty.com/tips/linux_find_string_files.php
http://shebangme.blogspot.com/2009/08/to-find-word-in-file.html