find cheat sheet
This article has last been updated at .
Basic options
Find has many options, but here are the ones that are commonly used. Often in combination to gain a better search job.
Long option | Short option | What the option does |
---|---|---|
-exec VALUE | Perform some command on the search rules | |
-group GROUP | Search by ownership (group) | |
Just show the search results | ||
-size VALUE | Limit by file size, with minus being smaller than, plus is bigger than specified size | |
-type d | Only search for directories | |
-type f | Only search for files | |
-user USERNAME | Search by ownership (user) | |
-xdev | Do not cross between different file systems (e.g. NFS) |
Creating a shell script? Use the long format option, as this improves the readability. For quick use of find on the command-line consider using the short notation of the related option.
Directories
Searching for a directory with a specific name, can be done by specifying the type and name.
find / -type d -name etc
To find all empty directories under the current work directory, use the -empty option.
find . -type d -empty
By permissions
The find command has the option to limit the search to the specific [file permissions](/filesystems/file-permissions/ of a file.
Find files with setuid (SUID) and setgid (SGID)
To see what files have the setuid bit:
find . -perm -4000
Another notation to do the same:
find . -perm /u=s
Search the setgid bit by using a ‘2’ as the first number
find . -perm -2000
Similar to setuid, we can use an alternative notation and search for the ’s’ in the group:
find . -perm /g=s
By ownership: user or group
To find all the files owned by a specific user, define the username.
find . -user michael
Another option is searching all files selected by a specific group.
find . -group adm
By file size
Smaller than 1 megabyte:
find . -size -1M
Search files bigger than a specific size, like more than 1 megabyte.
find . -size +1M
The -size option can also be combined to find a file with a minimum size and maximum size.
By date of time
Modification time
Want to find the files for which the content was recently changed? Use the modified time and select the time in minutes:
find . -type f -mmin -15
When looking for files that are changed for a longer period, change the minus into a plus and specify the period (e.g. older than 1 week).
find . -type f -mtime +1w
Modification date
Looking for files that are changed after a specific date?
find . -type f -newermt 2024-05-01
To find files modified in a specific date range, set the begin and end. For example to define a specific week:
find . -type f -newermt 2024-05-01 ! -newermt 2024-05-08
Access date
Like the modification date, we can search for files that are recently accessed. To define a specific day, tell find the start date and the stop date.
find . -type f -newerat 2024-05-08 ! -newerat 2024-05-09
By depth
Sometimes you don’t want to go multiple levels deep into the underlying subdirectories. Specify the depth to search, so that find knows when to stop.
find . -maxdepth 1 -print
Applying changes to files found
Correcting file permissions
Change all files that have file permissions of ‘777’ to more a sane value of ‘644’:
find . -type f -perm 777 -print -exec chmod 644 {} \;
For directories that would most likely be 755:
find . -type d -perm 777 -print -exec chmod 755 {} \;