Skip to content

Filtering Examples

Practical recipes for narrowing what Recursivist shows. For the rules behind these, see Pattern Filtering.

Note

--exclude-pattern and --include-pattern match a file's name, not its path. To filter by location, use --exclude (directory names) or --ignore-file (gitignore-style, path-aware).

Excluding Directories and Extensions

# Directories
recursivist visualize --exclude node_modules --exclude .git --exclude venv

# Extensions (leading dot optional)
recursivist visualize --exclude-ext .pyc --exclude-ext .log --exclude-ext .cache

Glob Patterns

# Exclude test files anywhere in the tree
recursivist visualize --exclude-pattern "*.test.js" --exclude-pattern "*.spec.js"

# Exclude Python bytecode
recursivist visualize --exclude-pattern "*.pyc"

# Exclude minified and bundled assets
recursivist visualize --exclude-pattern "*.min.js" --exclude-pattern "*.bundle.js"

Regular Expressions

# Files named test_*.py
recursivist visualize --exclude-pattern "^test_.*\.py$" --regex

# JavaScript and TypeScript test files
recursivist visualize --exclude-pattern ".*\.(spec|test)\.(js|ts)x?$" --regex

Include Patterns

Include patterns restrict the view to files whose names match. A file must match at least one include pattern to appear (unless removed by an exclude pattern or excluded extension, which take priority):

# Source and docs by extension
recursivist visualize --include-pattern "*.js" --include-pattern "*.ts" --include-pattern "*.md"

# Only Python files (regex)
recursivist visualize --include-pattern ".*\.py$" --regex

Ignore Files

For path-aware, gitignore-style filtering, use an ignore file:

recursivist visualize --ignore-file .gitignore
recursivist visualize --ignore-file .recursivist-ignore

Example .recursivist-ignore:

# Dependencies and build output
node_modules/
venv/
dist/
build/

# Logs and caches
*.log
.cache/

# Editor files
.vscode/
.idea/
*.swp

Combining Filters

recursivist visualize \
  --exclude node_modules --exclude .git --exclude build \
  --exclude-ext .pyc --exclude-ext .log \
  --exclude-pattern "*.test.js" \
  --include-pattern "*.js" --include-pattern "*.md" \
  --ignore-file .gitignore

This keeps .js and .md files, drops .test.js files and excluded extensions, prunes the listed directories, and also applies the ignore file.

Language-Specific Recipes

Python

recursivist visualize \
  --exclude __pycache__ --exclude .pytest_cache --exclude .venv --exclude venv \
  --exclude-ext .pyc --exclude-ext .pyo \
  --exclude-pattern "test_*.py" \
  --ignore-file .gitignore

JavaScript / TypeScript

recursivist visualize \
  --exclude node_modules --exclude dist --exclude build --exclude coverage \
  --exclude-ext .map --exclude-ext .log \
  --exclude-pattern "*.test.js" --exclude-pattern "*.spec.ts" --exclude-pattern "*.min.js" \
  --ignore-file .gitignore

Java / Maven

recursivist visualize \
  --exclude target --exclude .idea \
  --exclude-ext .class --exclude-ext .jar \
  --exclude-pattern "*Test.java" \
  --ignore-file .gitignore

Filtering with Statistics

Pair filters with a metric sort to surface what matters:

# Largest source files
recursivist visualize --exclude node_modules --exclude .git --sort-by-size

# Most recently changed files
recursivist visualize --exclude node_modules --exclude .git --sort-by-mtime

Filtering in Export and Compare

Every filtering option works the same way with export and compare:

recursivist export --format md \
  --exclude node_modules --exclude .git \
  --exclude-ext ".log" \
  --include-pattern "*.py" --include-pattern "*.md"

recursivist compare dir1 dir2 \
  --exclude node_modules --exclude .git \
  --exclude-pattern "*.min.js" \
  --save