A powerful, cross-platform command-line tool to automatically organize files into categorized folders based on their file extensions.
- 🎯 Smart Categorization - Automatically sorts files into 9 categories
- 🔄 Recursive Processing - Include subdirectories in organization
- 👁️ Preview Mode - Safe dry-run to preview changes before applying
- ↩️ Undo Functionality - Revert the last organization operation
- 📊 Detailed Logging - Track all file movements for safety
- 🚀 Cross-Platform - Works on Windows, Linux, and macOS
- 💻 Interactive Mode - Easy-to-use menu system
- ⚡ High Performance - Fast processing with Rust backend
| Category | File Extensions |
|---|---|
| 📷 Images | jpg, jpeg, png, gif, bmp, tiff, webp, svg |
| 🎥 Videos | mp4, avi, mov, wmv, flv, mkv, webm, m4v |
| 📄 Documents | pdf, doc, docx, txt, rtf, odt, pages |
| 🎵 Audio | mp3, wav, flac, aac, ogg, wma, m4a |
| 📦 Archives | zip, rar, 7z, tar, gz, bz2, xz |
| 💻 Code | py, js, ts, java, cpp, c, h, rs, go, php, html, css, xml, json, yaml, toml, md |
| 📊 Spreadsheets | xls, xlsx, csv, ods, numbers |
| 📋 Presentations | ppt, pptx, key, odp |
| 📁 Others | Uncategorized files |
-
Download the portable version:
folder-organizer-portable.exefolder-organizer-portable.bat
-
Run the interactive launcher:
folder-organizer-portable.bat
-
Or use command line:
folder-organizer-portable.exe "C:\Users\username\Downloads" --dry-run
-
Build from source:
chmod +x build-linux.sh ./build-linux.sh
-
Run the interactive launcher:
./folder-organizer.sh
-
Or use command line:
./folder-organizer "/home/user/Downloads" --dry-run
# Organize files in Downloads folder
folder-organizer "C:\Users\username\Downloads"
# Preview changes first (recommended)
folder-organizer "C:\Users\username\Downloads" --dry-run# Include subdirectories
folder-organizer "C:\Users\username\Downloads" --recursive
# Preview with subdirectories
folder-organizer "C:\Users\username\Downloads" --dry-run --recursive
# Undo last organization
folder-organizer "C:\Users\username\Downloads" --undo# Windows
folder-organizer-portable.bat
# Linux
./folder-organizer.sh-
Clone the repository:
git clone https://github.com/yourusername/folder-organizer.git cd folder-organizer -
Build the executable:
cd src-tauri cargo build --release -
Create portable version:
cp target/release/folder-organizer.exe ../folder-organizer-portable.exe
folder-organizer/
├── src-tauri/ # Rust backend
│ ├── src/
│ │ ├── main.rs # CLI interface
│ │ ├── organizer.rs # Core logic
│ │ └── error.rs # Error handling
│ └── Cargo.toml # Dependencies
├── src/ # Frontend (Vue.js)
├── folder-organizer-portable.exe # Windows executable
├── folder-organizer-portable.bat # Windows launcher
├── folder-organizer.sh # Linux launcher
├── build-linux.sh # Linux build script
└── LINUX_SETUP.md # Linux setup guide
Edit src-tauri/src/organizer.rs to modify file categories:
fn get_default_categories() -> HashMap<String, Vec<String>> {
HashMap::from([
("Custom Category".to_string(), vec!["ext1".to_string(), "ext2".to_string()]),
// ... existing categories
])
}- Location:
.folder_organizer_log.jsonin the target directory - Contains: All file movements for undo operations
- Format: JSON with timestamps and file paths
"Permission denied" (Linux)
chmod +x folder-organizer folder-organizer.sh"Executable not found"
- Ensure the executable is in the same folder as the launcher
- Check file permissions (Linux)
"Directory not found"
- Use absolute paths:
C:\Users\username\Downloads - Ensure the directory exists and is accessible
- Run with
--dry-runfirst to preview changes - Check the log file for detailed information
- Use the undo feature if something goes wrong
- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Make your changes
- Test thoroughly
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with Rust for performance and safety
- Cross-platform compatibility with Tauri
- Modern UI with Vue.js and Tailwind CSS
- Languages: Rust, JavaScript, HTML, CSS
- Platforms: Windows, Linux, macOS
- Categories: 9 file types supported
- Extensions: 50+ file extensions recognized
- Performance: Fast processing with Rust backend
⭐ Star this repository if you find it useful!
🐛 Report issues or suggest features in the Issues tab.