Observed since 20 Oct, 21:06 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Smart CLI tool to organize messy directories by file type, date, or size with safety features
A smart CLI tool to organize messy directories (Downloads, Desktop, etc.) by file type, date, or size — with safety features like dry-run, undo, and configurable ignore patterns.
--apply to execute, --undo to revertrich--recursivepipx install file-organizer
pip install file-organizer
git clone https://github.com/OWNER/file-organizer.git
cd file-organizer
pip install -e .
# Preview what would happen (dry-run)
file-organizer organize ~/Downloads --by type
# Actually organize by file type
file-organizer organize ~/Downloads --by type --apply
# Organize by date (year-month folders)
file-organizer organize ~/Downloads --by date --apply
# Organize by size
file-organizer organize ~/Downloads --by size --apply
# Organize recursively (includes subdirectories)
file-organizer organize ~/Downloads --by type --recursive --apply
# Export plan to JSON for review
file-organizer organize ~/Downloads --by type --export-plan plan.json --dry-run
# Skip confirmation prompt
file-organizer organize ~/Downloads --by type --apply -y
# Undo last operation
file-organizer undo
organizeOrganize files in a directory.
file-organizer organize [PATH] [OPTIONS]
Options:
--by, -b Organization mode: type, date, size (default: type)
--apply, -a Actually move files (default: dry-run)
--dry-run Show what would be done without changes
--yes, -y Skip confirmation prompt
--recursive, -r Organize files in subdirectories recursively
--export-plan FILE Export organization plan to JSON file
undoRevert the last organization operation.
file-organizer undo
configManage configuration.
file-organizer config [OPTIONS]
Options:
--show, -s Show current configuration
--set KEY=VALUE Set a configuration value
--reset Reset to default configuration
ignoreManage ignore patterns.
file-organizer ignore [OPTIONS]
Options:
--add, -a PATTERN Add ignore pattern
--remove, -r PATTERN Remove ignore pattern
--list, -l List ignore patterns
Configuration file: ~/.config/file-organizer/config.yaml (Linux/macOS) or %APPDATA%\file-organizer\config.yaml (Windows)
organize:
default_mode: type # type, date, or size
date_format: "%Y-%m" # strftime format for date mode
size_thresholds: # MB thresholds for size mode
small_mb: 1
large_mb: 100
create_subdirs: true # Create category subdirectories
ignore:
patterns: # Glob patterns to ignore
- "*.tmp"
- "*.crdownload"
- "*.part"
- ".DS_Store"
- "Thumbs.db"
hidden_files: true # Ignore hidden files
system_files: true # Ignore system files
safety:
dry_run_by_default: true # Default to dry-run
require_confirmation: false # Ask before applying
max_file_size_mb: 1000 # Skip files larger than this
preserve_timestamps: true # Preserve file timestamps
advanced:
follow_symlinks: false # Follow symbolic links
ignore_errors: false # Continue on errors
log_level: INFO # Logging level
Set default mode to date:
file-organizer config --set organize.default_mode=date
Add custom ignore pattern:
file-organizer ignore --add "*.bak"
--recursive)--apply), shows progress barThe last organization is logged to ~/.config/file-organizer/undo_log.json. Run file-organizer undo to move all files back to their original locations.
# Clone and setup
git clone https://github.com/OWNER/file-organizer.git
cd file-organizer
pip install -e ".[dev]"
# Run tests
pytest -v
# Lint
ruff check .
# Type check
mypy src/file_organizer
Non-Commercial License — see LICENSE for details.
This software is free for non-commercial use only. Commercial use requires a separate license. Attribution to Blake Nary (thedog737) is required for all uses.
Made with ❤️ using Python, Typer, and Rich
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.1.0 | 7 Jun 2026 | 8 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 21:06 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:94765c93a7fd3bec955d0102f65db22c3b50e31d8cd5d1b73affa8af6576917c