A lightweight, cross-platform command-line toolkit for everyday file management.
DTools bundles two everyday file utilities into a single installable package.
After one pip install, the DTools command is available system-wide on any supported platform.
| # | Tool | Short name | Description |
|---|---|---|---|
| 1 | File Organizer | FO |
Sorts files by extension into Documents, Images, Videos, Audio, and Others subfolders |
| 2 | BTU — Backup To USB | BTU |
Zips selected files/folders into a timestamped archive and copies it to your USB drive |
- Python 3.9 or later
pip(bundled with Python 3.4+)
# 1. Unzip the downloaded package
unzip dtools.zip
# 2. Navigate into the project directory
cd dtools
# 3. Install locally
pip install .✅ After installation, the
DToolscommand is available in any terminal session, from any directory.
| Platform | Notes |
|---|---|
| Windows | Run in PowerShell or CMD. If DTools is not found, add your Python Scripts\ directory to the system PATH. |
| macOS | If you see a permission warning, use pip install . --user |
| Linux | If pip is managed by your OS, use pip install . --break-system-packages |
DToolsThe interactive menu will appear:
██████╗ ████████╗ ██████╗ ██████╗ ██╗ ███████╗
██╔══██╗╚══██╔══╝██╔═══██╗██╔═══██╗██║ ██╔════╝
██║ ██║ ██║ ██║ ██║██║ ██║██║ ███████╗
██║ ██║ ██║ ██║ ██║██║ ██║██║ ╚════██║
██████╔╝ ██║ ╚██████╔╝╚██████╔╝███████╗███████║
╚═════╝ ╚═╝ ╚═════╝ ╚═════╝ ╚══════╝╚══════╝
Developer Tools Suite — v1.0.0
[1] File Organizer (FO)
Organizes all files in a directory into subfolders by type.
[2] BTU — Backup To USB (BTU)
Zips files/folders and transfers the archive to your USB drive.
[0] Exit
Quit DTools.
Choose a tool [0-2]:
Press 1, 2, or 0 and hit Enter.
Scans a target directory and moves every file into a categorized subfolder,
all collected under a single organized folder/ directory.
your-directory/
└── organized folder/
├── Documents/ ← .pdf .docx .txt .xlsx .csv .md …
├── Images/ ← .jpg .png .gif .svg .psd .raw …
├── Videos/ ← .mp4 .mkv .avi .mov .webm …
├── Audio/ ← .mp3 .wav .flac .aac .ogg …
└── Others/ ← everything else
- Select
[1]from the DTools menu. - Enter the path to the directory you want to organize
(press Enter to use the current directory). - When asked for Dry-run preview, type
yto preview without moving any files,
or press Enter to proceed immediately.
- If
organized folder/already exists it is reused — never recreated from scratch. - Filename conflicts are resolved automatically →
report.pdfbecomesreport (1).pdf. - Only top-level files are moved; subdirectories are left untouched.
Collects any mix of files and folders you specify, compresses them into a
timestamped .zip archive, and copies it directly to a connected USB drive.
[1] Path: /home/user/documents ✔ Folder added
[2] Path: /home/user/photo.jpg ✔ File added
[3] Path: end
✔ Archive created: backup_20260524_103000.zip (2.3 MB)
✔ USB drive detected: /media/john/MyUSB
✔ Transfer complete!
backup_20260524_103000.zip
└── backup/
├── documents/
│ ├── note.txt
│ └── report.pdf
└── photo.jpg
- Archive filename includes a timestamp — every backup is a separate file.
- If multiple USB drives are connected, BTU lists them and asks which to use.
- If no USB is detected automatically, you will be prompted to enter the path manually.
- Duplicate archive names on USB are resolved by appending a counter (
_1,_2, …).
dtools/
├── bin/
│ ├── __init__.py
│ └── dtools.py ← Entry point → DTools command
├── lib/
│ ├── __init__.py
│ ├── menu.py ← Interactive menu
│ ├── file_organizer.py ← Tool 1
│ └── btu.py ← Tool 2
├── __init__.py
setup.py ← pip install entry
README.md ← This file
pip uninstall dtoolsYour Python bin/ (or Scripts\ on Windows) directory is not in the system PATH.
Find the correct path with:
# macOS / Linux
python3 -m site --user-base
# Windows
python -c "import site; print(site.getusersitepackages())"Add the printed directory to your PATH environment variable and restart your terminal.
BTU scans standard mount points:
| OS | Locations scanned |
|---|---|
| Linux | /media/<user>/<drive>, /mnt/<drive> |
| macOS | /Volumes/<drive> |
| Windows | Removable drive letters (A–Z) |
If your drive is mounted elsewhere, enter its path manually when prompted.
Ensure you have read access to the source files and write access to the destination.
On macOS and Linux you may need to prefix with sudo for system-protected directories.
This project is released under the MIT License.
You are free to use, modify, and distribute it for any purpose, with or without attribution.
Made with Python · DTools v1.0.0