finders

Crates.iofinders
lib.rsfinders
version2.1.0
created_at2025-04-09 09:36:07.966381+00
updated_at2025-10-28 06:18:24.43811+00
description A tool to shortcut the find command
homepage
repositoryhttps://github.com/ydkadri/finders
max_upload_size
id1626466
size44,415
Youcef Kadri (ydkadri)

documentation

README

FindeRS

CI Benchmarks Crates.io License

A tool to replace the complex bash find logic which searches for files (optionally) containing some string or regular expression pattern.

The challenge

Finding files containing some string is a common use case in the shell, however the command is cumbersome:

# Bash command
find <dir> \
    -type f \
    -name <file pattern> \
    -exec grep -iH <search pattern> {} \;

Instead, finders provides a lightweight wrapper for this common command.

Installation

FindeRS can be found on crates.io and as such can be installed with

cargo install finders

Usage

Usage: finder [OPTIONS] [PATH]

Arguments:
  [PATH]  Optional path to operate on, defaults to CWD

Options:
  -f, --file-pattern <FILE_PATTERN>      File pattern to filter results
  -s, --search-pattern <SEARCH_PATTERN>  Search pattern to match in result files
  -r, --regex-pattern <REGEX_PATTERN>    Regex pattern to match in result files
  -i, --case-insensitive                 Flag for case insensitive search
  -v, --verbose                          Verbose output details unreadable files
  -h, --help                             Print help
  -V, --version                          Print version

Performance

FindeRS is designed for performance with:

  • Streaming file processing using 8KB chunks
  • Line-by-line searching to minimize memory usage
  • Efficient pattern matching with both simple string search and regex support

Benchmarks are run automatically on every pull request and merge to main. View the latest benchmark results in the Actions tab.

Key benchmark categories:

  • searcher_search_line: Tests case-sensitive and case-insensitive string matching
  • regex_searcher_search_line: Tests regex pattern matching performance
  • searcher_search_content: Tests multi-line content searching
  • file_finder: Tests file discovery with and without patterns

Development

To run benchmarks locally:

cargo bench

To run tests:

cargo test

To check code quality:

cargo fmt --all -- --check
cargo clippy -- -D warnings

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Release Process

Releases are automated through GitHub Actions:

  1. Create and push a new tag with semantic versioning: git tag v2.0.3 && git push origin v2.0.3
  2. The release workflow will automatically:
    • Run all tests
    • Build the release binary
    • Create a GitHub release with release notes
    • Publish the new version to crates.io

References

Commit count: 15

cargo fmt