#regex #parallel #search #cli

bin+lib fdf

A fast, multi-threaded filesystem search tool

5 releases

new 0.1.5 Mar 10, 2025
0.1.3 Mar 6, 2025
0.1.2 Mar 6, 2025
0.1.1 Mar 6, 2025
0.1.0 Mar 5, 2025

#631 in Filesystem

Download history 483/week @ 2025-03-03

483 downloads per month

MIT license

77KB
1.5K SLoC

Rust 1.5K SLoC // 0.1% comments Shell 234 SLoC // 0.1% comments

fdf - Fast Directory Finder

LINUX ONLY!!!!!!!!!!!!! (should work on openbsd?)

A high-performance file search utility for Linux systems, designed to quickly traverse and filter your filesystem.

PLEASE NOTE

THIS PROJECT IS MEANT TO BE USED AS A COMMIT TO FD AND IS NOWHERE NEAR COMPLETION.


Features

  • Ultra-fast multi-threaded directory traversal
  • Powerful regex pattern matching (with glob support via -g)
  • Extension filtering (-E jpg,png)
  • Hidden file toggle (default: excluded)
  • Case sensitivity control (-s for case-sensitive)
  • File type filtering (files, directories via -t)
  • Thread configuration for performance tuning (-j 8)
  • Max results limit (-d 100)
  • Full path matching (-p)
  • Fixed-string search (non-regex via -F)

Requirements

  • Linux only: Optimized for Linux filesystems
  • Rust 1.74+ (recommended for building from source)

Installation

# Clone & build
git clone https://github.com/alexcu2718/fdf.git
cd fdf
cargo build --release

# Optional system install
cp target/release/fdf ~/.local/bin/

Usage
Arguments
PATTERN: Regular expression pattern to search for
PATH: Directory to search (defaults to root /)
Basic Examples
# Find all files containing "config" in the current directory and subdirectories (case-insensitive and excluding directories+hidden files)
fdf config -c

# Find all JPG files in the home directory (excluding hidden files)
fdf . ~ -E jpg

# Find all  Python files in /usr/local (including hidden files)
fdf . /usr/local -E py -H

## Options

-c, --current-directory   Uses the current directory instead of the default path
-E, --extension <EXT>     Filters results by file extension
-H, --hidden              Shows hidden files (those starting with .)
-s, --case-sensitive      Enables case-sensitive pattern matching
-j, --threads <NUM>       Sets the number of threads to use (default: system available)
-I, --include-dirs        Includes directories in results
-g, --glob                Treats the pattern as a glob pattern
-d, --max-depth <NUM>     Limits results to first N matches
-t, --type <TYPE>...      Filters by file type (can be used multiple times)
-p, --full-path           Matches against full file paths rather than just names
-F, --fixed-strings       Treats pattern as a fixed string, not a regex
-h, --help                Displays help information
-V, --version             Displays version information

Dependencies

~5.5–8MB
~140K SLoC