Cheatsheet & Examples: find

HongHong
5 min read

The find command is used to search for files and directories within a directory hierarchy, supporting various conditions and actions based on file attributes, metadata, or content.

Search for files by name

Example Usage:
find /path/to/search -name "filename.txt"

What it does:
Locates files named "filename.txt" starting from the specified directory.

Command-line Arguments Explained:

  • /path/to/search: The directory where the search begins.
  • -name "filename.txt": Matches files with the exact name provided.

Search for directories by name

Example Usage:
find /path/to/search -type d -name "foldername"

What it does:
Locates directories named "foldername" starting from the specified directory.

Command-line Arguments Explained:

  • -type d: Filters results to directories only.
  • -name "foldername": Matches directories with the exact name provided.

Search for recently modified files (last 24 hours)

Example Usage:
find /path/to/search -mtime -1

What it does:
Finds files modified within the last 24 hours.

Command-line Arguments Explained:

  • -mtime -1: Matches files modified less than 1 day ago.
  • -1 indicates "within the last day"; use +1 for "more than 1 day ago."

Search for files larger than a specific size

Example Usage:
find /path/to/search -size +1M

What it does:
Finds files larger than 1 megabyte.

Command-line Arguments Explained:

  • -size +1M: Matches files larger than 1MB.
  • M stands for megabytes; use k for kilobytes or G for gigabytes.

Search for files with specific permissions

Example Usage:
find /path/to/search -perm -u+x

What it does:
Finds files with execute permission for the user (owner).

Command-line Arguments Explained:

  • -perm -u+x: Checks if the user has execute permission.
  • The - prefix means "all bits in the mode are set"; + means "any bit is set."

Search for files by owner

Example Usage:
find /path/to/search -user username

What it does:
Identifies files owned by the specified user.

Command-line Arguments Explained:

  • -user username: Matches files owned by the user "username."

Search for empty files or directories

Example Usage:
find /path/to/search -empty

What it does:
Locates empty files (zero-size) or empty directories.

Command-line Arguments Explained:

  • -empty: Matches files or directories with no content.

Combine multiple search criteria

Example Usage:
find /path/to/search -name "*.txt" -and -size +1k

What it does:
Finds text files larger than 1 kilobyte.

Command-line Arguments Explained:

  • -name "*.txt": Matches files ending with ".txt".
  • -and: Combines conditions; replaces the default logical AND.

Execute a command on found files

Example Usage:
find /path/to/search -name "*.log" -exec rm {} \;

What it does:
Removes all .log files found in the specified directory.

Command-line Arguments Explained:

  • -exec rm {} \;: Executes the rm command on each matched file.
  • {} is a placeholder for the file path; \; terminates the command.

Search for files within a specific depth

Example Usage:
find /path/to/search -maxdepth 2 -name "*.py"

What it does:
Finds Python files up to two levels deep in the directory tree.

Command-line Arguments Explained:

  • -maxdepth 2: Limits the search to two levels of subdirectories.
  • -name "*.py": Matches files ending with ".py".

Search for files with a specific inode number

Example Usage:
find /path/to/search -inum 12345

What it does:
Finds files with the inode number 12345.

Command-line Arguments Explained:

  • -inum 12345: Matches files by their inode number.

Search for files accessed in the last 7 days

Example Usage:
find /path/to/search -atime -7

What it does:
Identifies files accessed within the last 7 days.

Command-line Arguments Explained:

  • -atime -7: Matches files accessed less than 7 days ago.
  • -atime +7 would match files accessed more than 7 days ago.

Example Usage:
find /path/to/search -type l

What it does:
Locates symbolic links (soft links) in the specified directory.

Command-line Arguments Explained:

  • -type l: Matches symbolic links.
  • Use f for regular files, d for directories, s for sockets, etc.

Search for files with wildcards in names

Example Usage:
find /path/to/search -name "report*"

What it does:
Finds files starting with "report" (e.g., "report1.txt", "report_final.pdf").

Command-line Arguments Explained:

  • -name "report*": Matches names beginning with "report" using a wildcard.

Search for files modified after a specific date

Example Usage:
find /path/to/search -newermt "2023-10-01"

What it does:
Finds files modified after October 1, 2023.

Command-line Arguments Explained:

  • -newermt "2023-10-01": Compares modification time to the given date.
  • mt specifies the modification time; use at for access time.

Search for files with case-insensitive names

Example Usage:
find /path/to/search -iname "report.txt"

What it does:
Finds files named "report.txt" regardless of case (e.g., "Report.txt", "REPORT.TXT").

Command-line Arguments Explained:

  • -iname "report.txt": Case-insensitive name match.
  • -name is case-sensitive; -iname ignores case.

Delete found files instantly

Example Usage:
find /path/to/search -name "*.tmp" -delete

What it does:
Deletes all .tmp files found in the specified directory.

Command-line Arguments Explained:

  • -delete: Removes matched files immediately.
  • Must be the last option in the command; cannot be combined with -exec.

Search for files matching a regular expression

Example Usage:
find /path/to/search -regex ".*\.log$"

What it does:
Finds files matching the regular expression (e.g., files ending with ".log").

Command-line Arguments Explained:

  • -regex ".*\.log$": Applies a regex pattern to file paths.
  • Use .* for any characters and $ to match the end of a filename.

Search for files not matching a condition

Example Usage:
find /path/to/search -not -name "*.txt"

What it does:
Lists all files except those ending with ".txt".

Command-line Arguments Explained:

  • -not: Negates the preceding condition.
  • -name "*.txt": Matches specific files; -not excludes them.

Search for files by file group

Example Usage:
find /path/to/search -group developers

What it does:
Identifies files belonging to the "developers" group.

Command-line Arguments Explained:

  • -group developers: Matches files with the specified group ownership.
0
Subscribe to my newsletter

Read articles from Hong directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Hong
Hong

I am a developer from Malaysia. I work with PHP most of the time, recently I fell in love with Go. When I am not working, I will be ballroom dancing :-)