How to Use the ‘fd’ Command in Linux

From installation to advanced use-cases, get the most out of the 'fd' command.

The fd command, short for “find directory,” is designed to search and locate files and directories within the filesystem. It’s known for its simplicity and speed, making it a favorite among system administrators and developers alike.

Compared to the traditional find command, fd offers a more user-friendly syntax and faster search capabilities. It’s commonly used for locating specific files, cleaning up directories, or even in automation scripts. Additionally, the fd command can be paired with other commands like grep for more advanced search functionality.

How to Install the fd Command

fd is not typically included by default in most Linux distributions, so you will need to install it. The installation process can vary depending on the distribution you are using. Here’s how you can install and uninstall fd on some common distributions:

Ubuntu/Debian

To install fd on Ubuntu or Debian, you can use the following command:

sudo apt-get update
sudo apt-get install fd-find

To uninstall it later, you can use:

sudo apt-get remove fd-find

Fedora

On Fedora, you can install fd with:

sudo dnf install fd-find

To uninstall it:

sudo dnf remove fd-find

macOS (using Homebrew)

If you’re on macOS and using Homebrew, you can install fd with:

brew install fd

To uninstall it:

brew uninstall fd

Note: the package name might be fd-find in some package managers, and you may need to use the command fdfind instead of fd. You can alias it to fd by adding alias fd=fdfind to your shell’s configuration file (e.g., .bashrc or .zshrc).

How to Use fd

1. Search for Files by Name

Syntax: fd PATTERN

Explanation: Searches for files and directories with a name matching the given pattern.

Example: fd 'report.txt'

Output:

/home/user/documents/report.txt
/home/user/archive/report.txt

The command searches for all occurrences of report.txt in the current directory and its subdirectories, listing the full paths to the files.

2. Search for Files with a Specific Extension

Syntax: fd '.*EXTENSION'

Explanation: Searches for files with a specific extension.

Example: fd '.*\.pdf'

Output:

/home/user/documents/file1.pdf
/home/user/documents/file2.pdf

The command searches for all PDF files in the current directory and its subdirectories.

3. Search for Files Modified in the Last N Days

Syntax: fd --changed-within 'Nd'

Explanation: Searches for files and directories modified within the last N days.

Example: fd --changed-within '7d'

Output:

/home/user/documents/week_report.docx
/home/user/photos/recent_image.jpg

The command lists all files and directories modified within the last 7 days.

4. Search for Directories Only

Syntax: fd --type d PATTERN

Explanation: Searches for directories with a name matching the given pattern.

Example: fd --type d 'projects'

Output:

/home/user/development/projects
/home/user/design/projects

The command searches for all directories named projects in the current directory and its subdirectories.

5. Search for Files Excluding Certain Directories

Syntax: fd --exclude DIR PATTERN

Explanation: Searches for files and directories matching the pattern, excluding specified directories.

Example: fd --exclude 'archive' 'report.txt'

Output:

/home/user/documents/report.txt

The command searches for report.txt but excludes any results from the “archive” directory.

6. Search for Files Larger than a Specific Size

Syntax: fd --size '+SIZE'

Explanation: Searches for files larger than a specified size.

Example: fd --size '+1M'

Output:

/home/user/videos/large_video.mp4
/home/user/music/big_album.flac

The command lists all files larger than 1 megabyte in the current directory and its subdirectories.

7. Search for Files and Execute a Command on Them

Syntax: fd PATTERN -x COMMAND

Explanation: Searches for files matching the pattern and executes a specified command on them.

Example: fd '.*\.txt' -x cat

Output:

Contents of file1.txt
Contents of file2.txt

The command searches for all text files and then runs the cat command on them, displaying their contents.

8. Search for Files in a Case-Insensitive Manner

Syntax: fd --ignore-case PATTERN

Explanation: Searches for files and directories matching the pattern, ignoring case.

Example: fd --ignore-case 'readme'

Output:

/home/user/README
/home/user/projects/readme.md

The command searches for all occurrences of readme in the current directory and its subdirectories, ignoring the case.

9. Search for Files Using a Regular Expression

Syntax: fd --regex 'REGEX'

Explanation: Searches for files and directories matching a given regular expression.

Example: fd --regex '^a.*\.txt$'

Output:

/home/user/documents/a_file.txt
/home/user/documents/another_file.txt

The command searches for all text files in the current directory and its subdirectories that start with the letter a.

10. Search for Files with Specific Permissions

Syntax: fd --perm PERMISSIONS

Explanation: Searches for files with specific permissions.

Example: fd --perm 755

Output:

/home/user/scripts/executable_script.sh

The command searches for files with permissions set to 755 (read, write, and execute for the owner; read and execute for the group and others).

More Linux commands:
Directory Operations rmdir · cd · pwd · exa · ls
File Operations cat · cp · dd · less · touch · ln · rename · more · head
File System Operations chown · mkfs · locate
Networking ping · curl · wget · iptables · mtr
Search and Text Processing find · grep · sed · whatis · ripgrep · fd · tldr
System Information and Management env · history · top · who · htop · glances · lsof
User and Session Management screen · su · sudo · open
WebsiteFacebookTwitterInstagramPinterestLinkedInGoogle+YoutubeRedditDribbbleBehanceGithubCodePenWhatsappEmail