====== Find ====== **General Information** The GNU find utility and some useful parsing methods. **Checklist** * Distro(s): Any ---- ====== General Syntax ====== The general syntax of find is: find [options] [path] [expression] The [options] allow for how to treat symbolic links, debugging, and optimization.\\ The defaults are almost always used. (see 'man find' if curious) [path] is the directory in which you are starting the search. [expression]s are made up of options that manipulate the operation of find. ---- ====== Find Examples ====== Some of the useful find commands that have been "tested in production". ---- ===== Find folders with the most files ===== If you run into a situation in which you have high inode usage as seen by 'df -i', the following syntax will show folders with the most files: nice find / -mount -printf '%h\n' | sort | uniq -c | sort -n -k 1 Explanation: * nice = Use nice in a production environment to lower CPU scheduling priority by a default of 10, as find can be CPU intensive * find / = start in the "/" directory (change this to the root of a mount point you wish to investigate as identified by 'df -i') * mount = Do not descend directories on other file systems. * printf '%h\n' = Print the leading directories of a file's name (%h), then a newline (\n). (man find, then search for 'printf\ format' to see all available formats) * sort = Default sort by starting of line alphabetical * uniq -c = Filter matching adjacent lines, prefix lines with the count of occurrences * sort -n -k 1 = Sort numerically (-n) via the "key" (-k) at field 1 (field 1 is the count from 'uniq -c'). This will give output with the first column displaying file count and the second column displaying the folder it is in. Example Output (last 5 lines): 1814 /usr/bin 1983 /usr/share/doc 2075 /usr/share/man/man3 2122 /usr/share/linuxmint/mintinstall/installed 2123 /usr/share/linuxmint/mintinstall/icons ---- ===== Find, starting in /, all files (type f) owned by rjones ===== find / -user rjones -type f ---- ===== Remove all files owned by rjones ===== find / -user rjones -type f -exec rm '{}' \; ---- ===== Find all files modified in the last 3 days ===== find / -mtime -3 -type f ----