Skip to content
DuoBolt

DuoBolt CLI

DuoBolt CLI is the command-line companion to the DuoBolt desktop app. It is designed for power users, automation workflows, CI pipelines, and server environments where a graphical interface is unnecessary.

The CLI performs the exact same duplicate file detection as the desktop app — including BLAKE3 hashing with default head+tail prehash (toggle with --no-prehash), symlink handling, and extension-based filtering.


Desktop (macOS) via Homebrew: brew tap rnine/duobolt then brew install --cask duobolt-desktop.

  1. Install with Homebrew (recommended):

    Homebrew
    brew tap rnine/duobolt
    brew install duobolt
  2. Verify it works:

    Test CLI
    duobolt-cli --version
  3. Or download the CLI binary (duobolt-cli) from the Download CLI section and move it into your PATH:

    Manual install
    sudo mv duobolt-cli /usr/local/bin/

Basic syntax
duobolt-cli <directory...> [options]

You can specify one or more directories to scan.

Examples:

Single directory
duobolt-cli ~/Documents
Multiple directories
duobolt-cli ~/Documents ~/Pictures --min-size=1M

Head+tail prehashing is enabled by default and recommended. Use --no-prehash only if you explicitly need full hashing on every file.

OptionDescription
--min-size=SIZEMinimum file size. Accepts raw bytes or K/M/G/T/P/E + KiB…EiB.
--chunk=MiB|autoHashing chunk size tuning (default: auto).
--no-prehashDisable head+tail prehash (enabled by default).
--threads=NHashing (worker) threads (default: #CPUs).
--follow-symlinksFollow directory symlinks.
--no-symlink-collapseTreat hardlinks/symlinks as unique.
--ignore-system-filesSkip system files (.DSStore, Thumbs.db, desktop.ini, .*).
--ignore-library-containersSkip macOS ~/Library/{Containers,Group Containers} (macOS only).
--ignore-hidden-filesSkip files whose name starts with ’.’ (hidden files).
--ignore-hidden-dirsSkip directories whose name starts with ’.’.
--only-ext=.mp3,.wavInclude only these file extensions (comma-separated, with dot).
--exclude-ext=.csv,.jsExclude these file extensions.
--exclude-dir-ext=.app,.bundleExclude directories with these extensions.
--output=txt|json|csvOutput format (default: txt).
--quietSuppress the progress line.

OptionDescription
--no-cacheDisable hash cache.
--cache-min-size-local=SIZECache minimum file size for local volumes.
--cache-min-size-network=SIZECache minimum file size for network volumes.
--cache-max-entries=NCache entry limit (0 = unlimited).
--cache-max-bytes=SIZECache size limit (0 = unlimited).
--cache-preload-max-entries=NPreload entry limit (0 = unlimited).
--cache-preload-max-bytes=SIZEPreload size limit (0 = unlimited).
--cache-statsShow cache statistics and exit.
--cache-clearClear cache and exit.

When --quiet is not set, the CLI prints cache metrics and stats at the end of the run.

Simple scan:

Scan a directory
duobolt-cli ~/Photos

Export results as JSON:

JSON output
duobolt-cli ~/Music --output=json --quiet > dupes.json

CodeMeaning
0No duplicates found
2Duplicates detected
130Cancelled by user (Ctrl-C)
OtherError occurred

Cron Jobs

Schedule regular scans on servers and workstations.

CI/CD Pipelines

Detect duplicates in build artifacts and deployments.

Server Deduplication

Clean up file servers and shared storage.

NAS / Media Libraries

Manage large photo/video collections efficiently.

Example automation script (macOS/Linux):

Automated scan script
#!/bin/bash
duobolt-cli /mnt/storage --output=json --quiet > /var/reports/dupes.json