Skip to main content

CLI Cleaner

Tests PyPI version Python versions License Code style: ruff

A command-line tool for safely cleaning files and directories in your project.

By default, it runs in dry-run mode: it only shows what would be deleted. Add --delete to actually remove files.

  • Beautiful output powered by rich
  • Flexible cleanup rules with --dirs, --files, --globs
  • Built-in presets for popular stacks: Python, Node, Rust, Go, Java, and more
  • Custom presets from pyproject.toml or cleanerconfig.toml
  • Dedicated subcommands for cleanup and preset management

Commands:

cleaner clean ...
cleaner presets list
cleaner presets export <name>

Requires Python ≥ 3.12.


Installation

pipx install cli-cleaner

Or:

pip install cli-cleaner

Quick start

Dry run:

cleaner clean -d __pycache__ -d .pytest_cache -g "build/**" -f "notes.temp.txt"

Real deletion:

cleaner clean -d __pycache__ -d .pytest_cache -g "build/**" -f "notes.temp.txt" --delete

Examples:

cleaner clean -g "**/*.pyc" -d __pycache__
cleaner clean -g "build/**" -g "dist/**" --delete
cleaner clean -f stray.log -f notes.temp.txt --ignore-dirs ".venv" --ignore-files stray.log --delete

Commands

cleaner clean

Main cleanup command.

cleaner clean [OPTIONS]

Supported options:

  • --dirs, -d — directory names to delete
  • --files, -f — file names to delete
  • --globs, -g — glob patterns to delete
  • --ignore-dirs, -id — directories to ignore
  • --ignore-files, -if — files to ignore
  • --root, -r — root directory for cleanup
  • --use, -u — preset name
  • --config — explicit path to a TOML config file with presets
  • --delete — actually delete files instead of dry-run

Examples:

cleaner clean --use python
cleaner clean --use python --delete
cleaner clean -g "*.log" -d build --delete

cleaner presets list

Show all available presets, including built-in ones and presets loaded from config files.

cleaner presets list

With custom config:

cleaner presets list --config "./ops/cleanerconfig.toml"

cleaner presets export

Export a preset into a separate TOML file named {preset_name}_exported.toml.

cleaner presets export python

With custom config:

cleaner presets export frontend --config "./ops/cleanerconfig.toml"

Presets

List all presets:

cleaner presets list

Export a preset:

cleaner presets export python

Use a preset:

cleaner clean --use python
cleaner clean --use python --delete
cleaner clean --use node -g "*.log" --ignore-dirs ".vscode" --delete

Built-in presets

Built-in presets are stored in src/cli_cleaner/presets.toml.

Available out of the box:

  • python — __pycache__, .pytest_cache, .mypy_cache, .ruff_cache, .tox, .nox, .hypothesis, htmlcov, build, dist, .pytype, .pyre, *.pyc, *.pyo, *$py.class, **/*.egg-info/**, .coverage.*, pytest-*.xml, pytest-*.log
  • node — node_modules, .parcel-cache, .next, .nuxt, .svelte-kit, .vite, .turbo, .cache, coverage, dist, build, out, *.log, *.tsbuildinfo
  • rust — target, coverage
  • go — bin, build, dist, coverage, coverage.out
  • java — target, build, out, .gradle, .idea/modules, compiled .class, .jar, .war, .ear artifacts
  • dotnet — bin, obj, .vs, TestResults, artifacts, coverage
  • php — vendor, var/cache, var/log, storage/framework/cache, bootstrap/cache, coverage, build, dist, *.log
  • ruby — vendor/bundle, .bundle, coverage, tmp, pkg, log/*.log
  • swift — DerivedData, .build, .swiftpm, build, Xcode user data
  • android — build, .gradle, app/build, .cxx, captures, coverage
  • latex — common intermediate files like *.aux, *.bbl, *.log, *.toc, *.out, *.synctex.gz
  • haskell — dist, dist-newstyle, .stack-work, coverage
  • elixir — _build, deps, cover
  • ansible — *.retry
  • c_cpp — build, bin, obj, .cache, CMakeFiles, Debug, Release, x64, x86, common binary/object artifacts
  • unity — Library, Temp, Build, Logs, Obj
  • unreal — Binaries, DerivedDataCache, Intermediate, Saved/Logs
  • os — .DS_Store, Thumbs.db, desktop.ini

Many presets also include default ignored directories such as .git, .hg, .svn, .idea, .vscode, venv, and .venv.


Project configuration

CLI Cleaner searches upward from the current working directory for:

  1. pyproject.toml
  2. cleanerconfig.toml

Preset merge order from lowest to highest priority:

  1. Built-in presets
  2. pyproject.toml
  3. cleanerconfig.toml
  4. File passed explicitly via --config

If the same preset name appears multiple times, the last source wins.

Example: pyproject.toml

[tool.cleaner.presets.my_python]
dirs = ["__pycache__", ".pytest_cache", "build", "dist"]
files = [".coverage", "coverage.xml"]
globs = ["**/*.pyc", "**/*.pyo", "**/*.egg-info/**"]
ignored_dirs = [".git", ".idea", ".vscode", ".venv"]
ignored_files = []

Example: cleanerconfig.toml

[tool.cleaner.presets.frontend]
dirs = ["node_modules", ".next", ".turbo", "dist", "build"]
files = [".eslintcache"]
globs = ["*.log", "*.tsbuildinfo"]
ignored_dirs = [".git", ".idea", ".vscode"]
ignored_files = []

Explicit config path

cleaner clean --use frontend --config "./ops/cleanerconfig.toml"

You can also use the same config file for preset inspection and export:

cleaner presets list --config "./ops/cleanerconfig.toml"
cleaner presets export frontend --config "./ops/cleanerconfig.toml"

Behavior

  • Default mode is dry-run
  • Add --delete to actually remove files
  • cleaner clean without arguments shows command help
  • To run cleanup, provide at least one selector:
    • --dirs
    • --files
    • --globs
    • or use a preset with --use
  • Manual CLI flags override preset values
  • Many presets include ignored directories for safety, such as .git, .idea, .vscode, venv, .venv

Typical scenarios

cleaner clean --use python
cleaner clean --use python --delete
cleaner clean --use node -g "*.log" --delete
cleaner clean -g "build/**" -g "*.temp.*" --ignore-dirs ".venv" --delete
cleaner clean --use frontend --delete
cleaner presets list --config "./ops/cleanerconfig.toml"
cleaner presets export python

Metadata

Release files for CLI-Cleaner 1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for CLI-Cleaner 1.3
File Size Uploaded
cli_cleaner-1.3.tar.gz 8.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for CLI-Cleaner 1.3
File Interpreter ABI Platform
cli_cleaner-1.3-py3-none-any.whl Python 3 none any Details

Total release size: 20.1 kB

Release files / cli_cleaner-1.3.tar.gz

Download URL cli_cleaner-1.3.tar.gz
Size 8.8 kB
Tags Source
SHA-256 checksum
How to use checksums
fb8e3961ede5288fcd8b749f65375c0d28cd859e04be8d2060f29d35e712ef9b
BLAKE2b-256 checksum
How to use checksums
a3b2b678274c3fb845b29810e1700bc499bc1d680acb0109a85712ad9ed54002
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 2, 2026.

Transparency log

Release files / cli_cleaner-1.3-py3-none-any.whl

Download URL cli_cleaner-1.3-py3-none-any.whl
Size 11.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5b33e97ea48550d264d6d12c5ff932d48dbe53e7652fec2dc754aa239ec0c4fc
BLAKE2b-256 checksum
How to use checksums
dff918d359db06ee091f2a050c5fe4c7689f8ca1713d7e782ee94cbb08160225
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 2, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.3 This release

2 release files

1.2

2 release files

1.1

2 release files

1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page