Organizza automaticamente qualsiasi tipo di file in una struttura YYYY/Mese/ basata sulla data di scatto (EXIF), sulla data nel nome file, o come ultima risorsa sulla data di modifica del filesystem.
I file media (immagini, video, audio) vengono messi direttamente nella cartella del mese. Tutto il resto (documenti, archivi, PDF, ecc.) finisce in una sottocartella documents/.
Export/
├── 2023/
│ └── July/
│ └── vacanza_2023-07-20.mp4
├── 2024/
│ ├── January/
│ │ └── 20240115_evento.mp4
│ ├── March/
│ │ ├── IMG_2024-03-15_120000.jpg
│ │ └── documents/
│ │ └── 2024-03-31_report.pdf
│ ├── June/
│ │ ├── PXL_20240601_083000.jpg
│ │ └── documents/
│ │ └── 2024-06-15_backup.zip
│ └── December/
│ └── 2024-12-25_natale.png
├── 2025/
│ └── January/
│ └── 15012025_festa.heic
└── 2026/
└── May/
└── documents/
├── fattura_gennaio.docx ← data da mtime
└── plain_notes.txt ← data da mtime
git clone https://github.com/holden093/media-sorter.git
cd media-sorter
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtsource .venv/bin/activate # sempre prima di eseguire
python main.pyScansiona la directory corrente (./) e sposta tutti i file in ./Export/YYYY/Mese/.
| Opzione | Descrizione |
|---|---|
--root DIR |
Directory radice da scandire (default: ./) |
--export DIR |
Directory di destinazione (default: ./Export/) |
--dry-run |
Mostra cosa verrebbe fatto senza modificare nulla |
--copy |
Copia i file invece di spostarli |
--no-skip-screenshots |
Includi anche gli screenshot (esclusi per default) |
--pattern REGEX |
Pattern data aggiuntivo con 3 gruppi (anno, mese, giorno) |
-v, --verbose |
Output dettagliato con data di origine per ogni file |
# Anteprima senza modificare
python main.py --dry-run
# Organizza tutto da una cartella specifica
python main.py --root ~/Download --export ~/Archivio
# Copia invece di spostare
python main.py --copy
# Output dettagliato
python main.py -v
# Pattern data personalizzato (es. foto_15_01_2024.jpg)
python main.py --pattern '(\d{2})_(\d{2})_(\d{4})'
# Includi anche gli screenshot
python main.py --no-skip-screenshots-
Scansiona ricorsivamente la directory
--rootraccogliendo tutti i file (nessun filtro per estensione) -
Rileva il tipo MIME reale via magic bytes (
filetype) — non si basa sull'estensione -
Per ogni file, determina la data con questa priorità:
Priorità Metodo Si applica a 1 EXIF ( Image DateTime,EXIF DateTimeOriginal)Solo immagini 2 Nome file — pattern YYYY-MM-DD,YYYYMMDD,DD-MM-YYYY,DDMMYYYY+ custom via--patternQualsiasi file 3 mtime del filesystem Qualsiasi file -
Sposta (o copia) il file:
- Media (image/video/audio) →
Export/YYYY/Mese/file.ext - Tutto il resto →
Export/YYYY/Mese/documents/file.ext
- Media (image/video/audio) →
-
Imposta il timestamp del file alla data originale
- File nascosti (che iniziano con
.) - File già dentro la directory di export
- File con
s100nel percorso - File con
Screenshotnel nome (disattivabile con--no-skip-screenshots)