A powerful Python tool to organize files in directories based on their extensions. Features include dry-run preview, undo capability, recursive organization, and custom configuration.
pip install file-organizer-toolFor YAML config support:
pip install file-organizer-tool[yaml]For development:
pip install file-organizer-tool[dev]# Basic usage - organize current directory
file-organizer-tool .
# Preview changes without moving files
file-organizer-tool /path/to/folder --dry-run
# Organize with detailed output
file-organizer-tool /downloads --verbose
# Organize subdirectories recursively
file-organizer-tool /messy-folder --recursive
# Undo the last organization
file-organizer-tool /organized-folder --undofrom file_organizer_tool import organize_files
# Basic organization
result = organize_files("/path/to/directory")
print(result.summary())
# With options
result = organize_files(
"/downloads",
dry_run=True,
verbose=True,
recursive=True,
on_conflict='rename' # or 'skip', 'overwrite'
)| Option | Short | Description |
|---|---|---|
--dry-run |
-n |
Preview changes without moving files |
--verbose |
-v |
Show detailed output for each file |
--recursive |
-r |
Organize files in subdirectories |
--dest |
-d |
Custom destination directory |
--config |
-c |
Path to custom config file (JSON/YAML) |
--exclude |
-e |
Glob patterns to exclude |
--on-conflict |
Handle duplicates: skip, rename, overwrite | |
--undo |
Undo previous organization | |
--log-file |
Path to write log file |
Files are organized into these categories by default:
- images: jpg, png, gif, svg, webp, ico, etc.
- documents: pdf, docx, txt, xlsx, md, csv, etc.
- scripts: py, js, ts, sh, bat, go, rs, etc.
- archives: zip, tar, gz, rar, 7z, etc.
- videos: mp4, avi, mov, mkv, webm, etc.
- audio: mp3, wav, flac, aac, ogg, etc.
- data: json, xml, yaml, sql, db, etc.
- fonts: ttf, otf, woff, woff2, etc.
- executables: exe, msi, dmg, deb, apk, etc.
- others: unrecognized extensions
Create a config.json or config.yaml:
{
"projects": [".sln", ".csproj", ".xcodeproj"],
"ebooks": [".epub", ".mobi", ".azw3"]
}Use it:
file-organizer-tool /folder --config config.json# Clone and install
git clone https://github.com/albizzy/file_organizer
cd file_organizer
pip install -e ".[dev]"
# Run tests
pytest tests/ -v
# Run with coverage
pytest tests/ --cov=file_organizer_toolMIT License - see LICENSE for details.
Albert Mwasisoba (@albizzy)