Find

From Psygen Wiki
Jump to: navigation, search

Find is used to search the directory system for files.

find location options search pattern

find /home myfile.txt This will look in the /home folder for myfile.txt (if you leave out the location, find will look in the directory you are currently in.)

By Name

By default, find is case-sensitive. The above example will not find MYFILE.TXT. The -iname flag tells find to ignore case.

If you want the search to be case insensitive:

find -iname myfile.txt

The above will find all of the following: myfile.txt MYFILE.TXT MyFile.txt (etc...)


By Type

find -type f -name "*.txt" This will find all the files whose name ends in .txt in the current directory.

The -type f flag tells find to look for files ( -type d will tell find to look for directories.)

find /home/me/ -not -name "*.html" This will look for all files NOT named *.html


By Permission

You can have find files based on permissions:

find . -type f -perm 644 This will find files in the current directory with 0777 permissions

. look in the current directory

-type f look for files

-perm 644 look for permissions. What permissions? 644 (-rw-r--r--)


More Examples of finding by permissions:

find -type f ! -perm 777 Look for anything that does NOT have 777 permissions

find / -perm /u=r Find read-only files. (Find -perm uses the same conventions as chmod )


Find and Execute

The -exec flag will make find do something to what it finds.

find / -type f -perm 777 -print -exec chmod 644 {} \; Find all files with 777 permissions. Run chmod 644 on the files that were found.


What's all that stuff at then end after the command I want to run?

{} each result of the find is put inside the brackets (The specified command (chmod 644 in this case) is run once for each matched file.)

\ This prevents the shell from expanding the contents of {}

 ; Ends the execute flag


References

  1. find man page
  2. Tecmint find Examples