Intelligent content-aware file organizer
Automatically categorizes and organizes files based on actual content, not just file extensions. Understands 45+ file types including PDFs, media, code, documents, and more.
FileMind analyzes file contents and intelligently organizes them into meaningful categories. Instead of just looking at .pdf or .jpg, it actually reads inside and understands what the file is about.
Example:
Downloads/
βββ resume.pdf β moved to Documents/CVs/
βββ vacation.jpg β moved to Media/Photos/
βββ config.yaml β moved to Dev/Config/
βββ notes.md β moved to Documents/Notes/
βββ mystery.bin β moved to Unknown/ (with analysis)
Problem: Every developer has a messy Downloads or Documents folder.
Solution: Run FileMind once. Everything organized. No manual work.
- Reads file headers and magic bytes
- Extracts metadata (PDF title, image EXIF, document author)
- Understands context, not just file type
- 45+ supported file types
Documents: PDF, DOCX, PPTX, XLS, TXT, MD, RST
Media: JPG, PNG, GIF, MP4, MP3, WAV, AVI, MOV
Code: PY, JS, TS, RS, GO, C, CPP, JAVA, SQL
Archives: ZIP, RAR, 7Z, TAR, GZ
Dev: JSON, YAML, TOML, ENV, DOCKERFILE, LOCK
Binaries: EXE, DLL, SO, DYLIB
Data: CSV, PARQUET, DB, SQLITE
Other: 20+ more types
- Reads PDF text and finds keywords
- Analyzes document titles and metadata
- Scores relevance for smarter categorization
- Batched operations (fast, reliable)
- Consistent results every time
- Reproducible folder structure
- Every operation is tracked
filemind undoreverses last organization- Full operation history
- Preview changes before applying
--dry-runshows what would be moved- Zero risk testing
- Size-bucketed organization (< 1MB, < 100MB, > 100MB)
- Identifies duplicates via hash
- Cleanup recommendations
git clone https://github.com/theoxfaber/filemind
cd filemind
cargo build --release
# Or install as command
cargo install --path .# Organize Downloads folder
filemind organize ~/Downloads
# Preview first (dry run)
filemind organize ~/Downloads --dry-run
# With verbose output
filemind organize ~/Downloads --verbose
# Create custom structure
filemind organize ~/Documents --config my-structure.json
# Undo last operation
filemind undo[FileMind] Analyzing 342 files...
[β] 156 documents moved to Documents/
[β] 78 images moved to Media/Photos/
[β] 45 videos moved to Media/Videos/
[β] 52 code files moved to Dev/
[β] 11 archives moved to Archives/
Organization complete!
- Time taken: 2.3s
- Moved: 342 files
- Duplicates found: 12
- Could not classify: 3
Next steps:
filemind show-duplicates # See duplicate files
filemind cleanup # Remove duplicates
- Read file header (first 512 bytes) for magic bytes
- Extract metadata (title, author, duration, etc.)
- Determine primary content type
- Match magic bytes against known signatures
- Analyze metadata context
- Apply keyword extraction for accuracy
- Assign confidence score
- Create target folder structure
- Batch move operations for reliability
- Track all moves (for undo)
- Report duplicates
- Identify duplicate files (same hash)
- Suggest cleanup actions
- Size analysis and recommendations
Create filemind.json for custom organization:
{
"root": "/Users/you",
"structure": {
"Documents": {
"CVs": ["pdf"],
"Receipts": ["pdf"],
"Notes": ["txt", "md"],
"Books": ["pdf", "epub"]
},
"Media": {
"Photos": ["jpg", "png", "webp"],
"Videos": ["mp4", "mkv", "mov"],
"Audio": ["mp3", "flac", "wav"]
},
"Dev": {
"Config": ["json", "yaml", "toml"],
"Code": ["py", "rs", "js", "go"],
"SQL": ["sql", "db"]
},
"Archives": ["zip", "7z", "rar"],
"Unknown": []
},
"rules": {
"min_file_size_kb": 10,
"follow_symlinks": false,
"ignore_hidden": true,
"batch_size": 100
}
}Then run:
filemind organize . --config filemind.jsonfilemind find-duplicates ~/Downloads
# Output:
# Hash: a1b2c3d4e5f6...
# 1. report.pdf (2.3 MB)
# 2. report_final.pdf (2.3 MB)
# 3. report_final_FINAL.pdf (2.3 MB)filemind cleanup-duplicates ~/Downloads
# Interactively choose which to keep
# Others are moved to Trash/filemind analyze-sizes ~/Downloads
# Output:
# Total size: 125 GB
# Largest files:
# Video.mp4: 45 GB
# Archive.zip: 32 GB
# Database.db: 28 GB
#
# Duplicates: 12 GB could be freed
# Unused: 3.2 GB (not accessed in 6 months)filemind history
# Shows all operations with timestamps
# Use for recovering from accidental moves- Latency: 100-200 files/second
- Memory: ~50MB baseline + file count
- Disk I/O: Sequential reads, minimal writes
- Batching: 100-file batches for reliability
Time: ~60 seconds
Memory: ~150MB
Success rate: 99.8%
Errors: 17 (permission denied, etc.)
filemind/
βββ src/
β βββ main.rs # CLI entry point
β βββ classifier.rs # File classification engine
β βββ magic.rs # Magic byte matching
β βββ metadata.rs # Metadata extraction
β βββ organizer.rs # Move operations
β βββ audit.rs # History tracking
β βββ dedup.rs # Duplicate detection
β βββ types.rs # Data structures
βββ tests/ # Integration tests
βββ Cargo.toml
βββ README.md
git clone https://github.com/theoxfaber/filemind
cd filemind
cargo install --path .cargo install filemindDownload from Releases
# Unit tests
cargo test
# Integration tests (actual file operations)
cargo test -- --include-ignored
# Benchmark
cargo bench- Symlinks: Currently skips symbolic links (can be enabled)
- Network drives: Performance limited by network speed
- Large files: Files > 5GB analysis may be slow
- Special chars: Some filesystem characters may cause issues
- Machine learning-based classification
- Watch mode (auto-organize on new files)
- Cloud sync integration
- GUI application
- Network share support
# Check permissions
ls -la ~/Downloads
# Run with sudo if needed (careful!)
sudo filemind organize ~/Protected# Use --verbose to see why
filemind organize . --verbose
# Check audit log
filemind history# View undo history
filemind history --limit 10
# Manual recovery (files in FileMind/Trash)
find . -path "*FileMind/Trash*" -type fContributions welcome:
- Fork the repo
- Create feature branch
- Add tests
- Submit PR
MIT License β see LICENSE
π¬ Bug report? Open an issue
πΌ Want to use FileMind professionally? Available for consulting
π§ Questions? DM me
Built with Rust | Fast. Reliable. Open Source.
β If this saved you time, star the repo!