Find
Jump to navigation
Jump to search
Description
The find command is a very powerful command to search for files and directories and take actions.
Main flags
Type
| Syntax | Description |
|---|---|
| -type f | Search for files |
| -type d | Search for directories |
Name and extensions
| Syntax | Description | Examples |
|---|---|---|
| -name | Search by name (case insensitive) |
|
| -iname | Search by name (case sensitive) |
|
Owner
| Syntax | Description | Examples |
|---|---|---|
| -user | Search files owned by "root" | -user root |
| -group | Search files owned by group "hacker" | -group hacker |
Permissions
Search for permissions is done with the -perm keyword.
| Number | Permission Type |
|---|---|
| 0 | No Permission (-) |
| 1 | Execute (x) |
| 2 | Write (w) |
| 4 | Read (r) |
There are 2 notations:
- octal: e.g. 644
- symbolic: e.g. u=r
- u for user
- g for group
- o for other users not in the group
- a for all users (default value)
Exact, or at least:
- Exact: -perm 644 or -u=r will search for the exact permission (rw for user, read for group, read for others)
- Prefix / or -: -perm /444 will search for files that are only readable by anyone
Size
- The size of a file is specified with the -size flag.
- Exact, less, more:
- -size n: exact size
- -size -n: less than
- size +n: more than
- Units:
- c: bytes
- k: kilobytes
- M: megabytes
Time
- The flag consists of a word and a prefix'.
- Word:
- min: minutes
- time: days
- Prefix:
- a: accessed
- m: modified
- c: status changed
Examples:
- -amin +30
- search for file that were last accessed more than 30 minutes ago
- -mtime -7
- search for files that were modifed less than 7 days ago
- -mtime 0
- search for files that were modified within the last 24 hours
Actions
- Flags:
- -exec: Execute command
- -delete: Delete file
Examples:
- Remove all *.jpg files on disk
- find / -type f -name "*.jpg" -exec rm -rf {} \;
- find / -type f -name "*.jpg" -delete
Examples
| Command | Description |
|---|---|
| find / -type f -name "*.xml" | Find all files whose name ends with ".xml" |
| find /home -type f -iname user.txt | Find all files in the /home directory (recursive) whose name is "user.txt" (case insensitive) |
| find / -type d -name "*exploits*" | Find all directories whose name contains the word "exploits" |
| find / -type f -user kittycat | Find all files owned by the user "kittycat" |
| find / -type f -size 150c | Find all files that are exactly 150 bytes in size |
| find /home -type f -size -2k -name "*.txt" | Find all files in the /home directory (recursive) with size less than 2 KiB’s and extension ".txt" |
| find / -type f -perm 644 | Find all files that are exactly readable and writeable by the owner, and readable by everyone else (use octal format) |
| find / -type f -perm /444 | Find all files that are only readable by anyone (use octal format) |
| find / -type f -perm -o=w -name "*.sh" | Find all files with write permission for the group "others", regardless of any other permissions, with extension ".sh" (use symbolic format) |
| find /usr/bin -type f -user root -perm -u=s | Find all files in the /usr/bin directory (recursive) that are owned by root and have at least the SUID permission (use symbolic format) |
| find / -type f -atime +10 -name "*.png" | Find all files that were not accessed in the last 10 days with extension ".png" |
| find /usr/bin -type f -mmin 120 | Find all files in the /usr/bin directory (recursive) that have been modified within the last 2 hours |
