To exclude directories while searching using find command
For example i want to prevent the find command from moving into the directories hhh and ggg while searching in my home directory
use this example:
find /home/karthik -name hhh -prune -name ggg -prune -o -type f
This will display all files in my other directories in my home except moving into my ggg and hhh directories
To grep mutiple pattern in the find command
find /home/karthik -type f | xargs egrep "(hello)\|(great)|(awesome)"
In this case i am trying to search multiple word hello,great,awesome in the files searched by the find command.
To serach only in the current directory without moving into the sub-directories use:
find /home/karthik maxdepth -1 -type f
Here all the files in the current directory is displayed without searching for files in any of the sub-directories
max-depth sets the maximum directory level the search can traverse.
To set the directory levels for searching the files you can use:
maxdepth and mindepth options
mindepth -to set the minimum directory level
maxdepth-to set the maximum directory level
In case if you want to search in sub-directory level 2 to 3
Set it as
set the mindepth as 2 and maxdepth as 3.
find /home/karthik -mindepth 2 -maxdepth 3 -type f
It will search all the the files from the second directory level to the third directory level.i.e
for example it searches in /home/karthik/fff/ or /home/karthik/fff/kkkk and not in /home/karthik
To find only ASCII textfiles in your directory excluding all other binary files use this:
find /home/karthik -type f |xargs file |grep -i ASCII | cut -d: f1
This uses file command which displays the type of file. And grep only text files from it and by cut command displays the filename from the search.
To find files which belong to a specific user :
Use this
find /home/karthik -user divya
In this case the find command searches for all the files which belong to divya in the /home/karthik directory.
To find files which is of specific size:
find /home/karthik -type f -size +100c
Here it will search for all the files above 100 bytes
+100c here + - more than
If you want files less than 100 bytes specify it as -100c
If you want files of exact size of 100 bytes keep it as 100c
To find empty files in your directory:
for this use -empty option
find /home/karthik -type f -empty
This will list all the empty files in this directory.
To list all the non-empty files you can simply do:
find /home/karthik -type f ! -empty
"!" just reverses the meaning of -empty
To find all the files of a provided permission
find /home/karthik -perm 777
It list all the files with the permission 777,
if you provide +444 it lists all the files above this permission.
To search in multiple directories you can use this:
find /home/karthik/ /tmp/ -type f
To search in multiple directory simply put it as said before.This will search in multiple directory /home/karthik/ and /tmp/
To grep pattern in the find list:
find /home/karthik/ -type f | xargs grep "hello"
This "xargs grep hello" command searches for hello across all the files returned by the "find /home/karthik/ -type -f"