13 March 2013

Linux Recursive Search inside files


You can make a search inside files within a a directory using the command "find", to do that:
cd /to_folder
find . -iname '*conf' | xargs grep 'string' -sl

-iname '*conf' states that the seach will only check the files ending with *conf,
using -iname '*' will search inside all the files within the current directory.
grep 'string' is the query string that you ment to search for.

If you only want to make a search based on the file names you should better use "locate" since it has an indexing feature to make faster searches:
updatedb
locate filename

If you don't have the locate command, you can install it with the yum installer:
updatedb
yum install mlocate

Find files based on their size

With the below command you can find the files greater than 100 MBs.
find /folder/ -type f -size +100000k -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'


Find files based on their modification date

With the below command you can find the files based on their modification date., if you write ctime instead of mtime you can list the files created within two days.:
find /folder/ -type f -mtime -2 -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'


No comments: