Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

Linux and Unix find command tutorial with examples

Tags: command exec unix

What is the find command in UNIX?

The find command in UNIX is a command line utility for walking a file hierarchy. It can be used to find files and directories and perform subsequent operations on them. It supports searching by file, folder, name, creation date, modification date, owner and permissions. By using the - exec other UNIX commands can be executed on files or folders found.

How to find a single file by name

To find a single file by name pass the -name option to find along with the name of the file you are looking for.

Suppose the following directory structure exists shown here as the output of the tree command.

foo
├── bar
├── baz
│   └── foo.txt
└── bop

The file foo.txt can be located with the find by using the -name option.

find ./foo -name foo.txt 
./foo/baz/foo.txt

How to find and delete a file

To find and delete a file pass the --delete option to find. This will delete the file with no undo so be careful.

find ./foo -name foo.txt --delete

To be prompted to confirm deletion combine -exec with rm -i.

find ./foo -name foo.txt -exec rm -i {} \;

How to find a directory

To find a directory specify the option -type d with find.

find ./foo -type d -name bar
./foo/bar

How to find files by modification time

To find files by modification time use the -mtime option followed by the number of days to look for. The number can be a positive or negative value. A negative value equates to less then so -1 will find files modified within the last day. Similarly +1 will find files modified more than one day ago.

find ./foo -mtime -1
find ./foo -mtime +1

How to find files by permission

To find files by permission use the -perm option and pass the value you want to search for. The following example will find files that everyone can read, write and execute.

find ./foo -perm 777

How to find and operate on files

To find and operate on file us the -exec option. This allows a command to be executed on files that are found.

find ./foo -type f -name bar -exec chmod 777 {} \;

How to find and replace in a range of files

To find and replace across a range of files the find command may be combined with another utility like sed to operate on the files by using the -exec option. In the following example any occurrence of find is replaced with replace.

find ./ -type f -exec sed -i 's/find/replace/g' {} \;

How to search for text within multiple files

Another use of combining find with exec is to search for text within multiple files.

find ./ -type f -name "*.md" -exec grep 'foo'  {} \;

Further reading

  • find man page
  • A collection of Unix/Linux find command examples
  • Find Command in Unix and Linux Examples
  • Some examples of using UNIX find command


This post first appeared on Home | Shape Shed, please read the originial post: here

Share the post

Linux and Unix find command tutorial with examples

×

Subscribe to Home | Shape Shed

Get updates delivered right to your inbox!

Thank you for your subscription

×