Linux find Examples

Last updated:

find is frequently used with xargs. See also Gnu Xargs Examples

Find all files whose name match "foobar" in the current directory and child directories

$ find . -name "*foobar*"

Find all files with a given extension except those in directories starting with a dot (hidden directories on linux)

(useful to leave stuff like .svn and .git untouched by changes)

$ find . -not -path '*/\.*' -type f -name '*.rb*'

Delete all ".txt" files in this directory and child directories

Caution is advised, because actions here may not be undone!

$ find . -name "*.txt" | xargs rm -rf

Use {} as placeholder for find + xargs

this is used when you have complex commands and you want to tell the shell where you want to place the argument.

Move all .txt files in the current directory and down to ~/

$ find . -name "*.txt" | xargs -I {} mv {} ~/

Restrict output to files only

Directories are files too so, by default, find returns them as well. If you want to only return files in a call to find, use the -type f modifier

$ find . -type f | xargs grep foo

Restrict output to directories only

Useful find directories like nbproject and .svn and .git, for instance:

$ find . -type d -name "foobar" | xargs rm -rf

Use sudo, find and xargs

When you need to use a command that requires sudo to run and you want that command to run with the results of find, write it just after the pipe(|). Assuming you only want to return files (-type f modifier):

$ find /etc/some/restricted/directory/ -type f | sudo  xargs sed -i 's/foo/bar/g'

Other resources

Dialogue & Discussion