Find
find is one of those commands that can be quite arcane. Hopefully this article should clear things up with a brief list of basic uses.
One of the nice things with find is that you can chain multiple things together.
Find a specific type
Basic usage:
find . -type [f - file|d - directory|l - links]
To find only normal files:
find . -type f
To find both files and directories:
find . -type f -o -type d
Find by filename
Basic usage:
find . -name <term>
You may want to use -iname for case insensitivity.
To find a directory named 'backup' or 'Backup':
find . -iname backup -type d
Find by time
Basic usage:
find . -[a - accessed|c - created|m - modified][time|min]
where time is in days when used with time, or minutes when used with min.
To find files modified within 3 minutes ago:
find . -mmin -3
To find files created within 1 day ago:
find . -cmin -1
Do things on match
Basic usage:
find . -exec <command> {} \;
The {} is substituted with the matching filename. The \; at the end denotes the end of the command passed to -exec.
To move all .o files to /tmp/objects:
find . -iname "*.o" -exec mv {} /tmp/{} \;
/tmp/{} can be simplified to /tmp, but this shows you can use {} more than once.
To convert all .php files into UTF-8 files
find . -iname "*.php" -exec sh -c 'iconv -f cp1252 -t utf-8 {} > {}.utf8' \;
for i in `(find . -name "*.utf8")`; do mv $i ${i/.utf8/}; done