Back to Skills
    🦞

    fd-find

    A fast and user-friendly alternative to 'find' - simple syntax, smart

    By @arnarsson
    View on GitHub
    SKILL.md
    ---
    name: fd-find
    description: A fast and user-friendly alternative to 'find' - simple syntax, smart defaults, respects gitignore.
    homepage: https://github.com/sharkdp/fd
    metadata: {"clawdbot":{"emoji":"📂","requires":{"bins":["fd"]},"install":[{"id":"brew","kind":"brew","formula":"fd","bins":["fd"],"label":"Install fd (brew)"},{"id":"apt","kind":"apt","package":"fd-find","bins":["fd"],"label":"Install fd (apt)"}]}}
    ---
    
    # fd - Fast File Finder
    
    User-friendly alternative to `find` with smart defaults.
    
    ## Quick Start
    
    ### Basic search
    ```bash
    # Find files by name
    fd pattern
    
    # Find in specific directory
    fd pattern /path/to/dir
    
    # Case-insensitive
    fd -i pattern
    ```
    
    ### Common patterns
    ```bash
    # Find all Python files
    fd -e py
    
    # Find multiple extensions
    fd -e py -e js -e ts
    
    # Find directories only
    fd -t d pattern
    
    # Find files only
    fd -t f pattern
    
    # Find symlinks
    fd -t l
    ```
    
    ## Advanced Usage
    
    ### Filtering
    ```bash
    # Exclude patterns
    fd pattern -E "node_modules" -E "*.min.js"
    
    # Include hidden files
    fd -H pattern
    
    # Include ignored files (.gitignore)
    fd -I pattern
    
    # Search all (hidden + ignored)
    fd -H -I pattern
    
    # Maximum depth
    fd pattern -d 3
    ```
    
    ### Execution
    ```bash
    # Execute command on results
    fd -e jpg -x convert {} {.}.png
    
    # Parallel execution
    fd -e md -x wc -l
    
    # Use with xargs
    fd -e log -0 | xargs -0 rm
    ```
    
    ### Regex patterns
    ```bash
    # Full regex search
    fd '^test.*\.js
    #x27; # Match full path fd --full-path 'src/.*/test' # Glob pattern fd -g "*.{js,ts}" ``` ## Time-based filtering ```bash # Modified within last day fd --changed-within 1d # Modified before specific date fd --changed-before 2024-01-01 # Created recently fd --changed-within 1h ``` ## Size filtering ```bash # Files larger than 10MB fd --size +10m # Files smaller than 1KB fd --size -1k # Specific size range fd --size +100k --size -10m ``` ## Output formatting ```bash # Absolute paths fd --absolute-path # List format (like ls -l) fd --list-details # Null separator (for xargs) fd -0 pattern # Color always/never/auto fd --color always pattern ``` ## Common Use Cases **Find and delete old files:** ```bash fd --changed-before 30d -t f -x rm {} ``` **Find large files:** ```bash fd --size +100m --list-details ``` **Copy all PDFs to directory:** ```bash fd -e pdf -x cp {} /target/dir/ ``` **Count lines in all Python files:** ```bash fd -e py -x wc -l | awk '{sum+=$1} END {print sum}' ``` **Find broken symlinks:** ```bash fd -t l -x test -e {} \; -print ``` **Search in specific time window:** ```bash fd --changed-within 2d --changed-before 1d ``` ## Integration with other tools **With ripgrep:** ```bash fd -e js | xargs rg "pattern" ``` **With fzf (fuzzy finder):** ```bash vim $(fd -t f | fzf) ``` **With bat (cat alternative):** ```bash fd -e md | xargs bat ``` ## Performance Tips - `fd` is typically much faster than `find` - Respects `.gitignore` by default (disable with `-I`) - Uses parallel traversal automatically - Smart case: lowercase = case-insensitive, any uppercase = case-sensitive ## Tips - Use `-t` for type filtering (f=file, d=directory, l=symlink, x=executable) - `-e` for extension is simpler than `-g "*.ext"` - `{}` in `-x` commands represents the found path - `{.}` strips the extension - `{/}` gets basename, `{//}` gets directory ## Documentation GitHub: https://github.com/sharkdp/fd Man page: `man fd`