diff --git a/README.md b/README.md new file mode 100644 index 0000000..32c542f --- /dev/null +++ b/README.md @@ -0,0 +1,140 @@ +# Datei-Konsolidierung nach Monat + +Ein Bash-Skript, um Dateien aus Verzeichnissen im Format `Jahr-Monat-Tag-Stunde` (z. B. `2026-05-04-10`) in monatliche Ordner (`Jahr-Monat`) zusammenzufassen. Dabei wird die **Unterverzeichnisstruktur beibehalten** und nur die **neueste Version** jeder Datei kopiert. + +--- + +## 📌 Voraussetzungen + +- **Betriebssystem**: Linux oder macOS (mit Bash-UnterstĂŒtzung) +- **Bash**: Mindestens Version 4.0 (fĂŒr `BASH_REMATCH`) +- **Rechte**: AusfĂŒhrbare Berechtigungen fĂŒr das Skript + +--- + +## đŸ“„ Installation + +1. **Skript herunterladen oder erstellen**: + Speichere das Skript als `consolidate_monthly_files_with_progress.sh` in deinem Projektverzeichnis. +2. **AusfĂŒhrbar machen**: + ```bash + chmod +x consolidate_monthly_files_with_progress.sh + ``` + +--- + +## 🚀 Verwendung + +### Grundlegende AusfĂŒhrung + +FĂŒhre das Skript im **ĂŒbergeordneten Verzeichnis** aus, das die `Jahr-Monat-Tag-Stunde`-Ordner enthĂ€lt: + +```bash +./consolidate_monthly_files_with_progress.sh +``` + +### Beispielverzeichnisstruktur + +``` +. +├── 2026-05-04-10 +│ ├── Unterordner1 +│ │ └── datei1.txt +│ └── datei2.txt +├── 2026-05-04-11 +│ ├── Unterordner1 +│ │ └── datei1.txt (neuere Version) +│ └── datei3.txt +└── 2026-06-01-09 + └── datei4.txt +``` + +### Ergebnis + +Nach der AusfĂŒhrung wird ein `consolidated`-Verzeichnis erstellt: + +``` +consolidated/ +├── 2026-05 +│ ├── Unterordner1 +│ │ └── datei1.txt (neueste Version aus 2026-05-04-11) +│ ├── datei2.txt +│ └── datei3.txt +└── 2026-06 + └── datei4.txt +``` + +--- + +## 📊 Fortschrittsanzeige + +WĂ€hrend der AusfĂŒhrung wird ein **Fortschrittsbalken** angezeigt: + +``` +Fortschritt: [===== ] 50% (5/10 Verzeichnisse, 25 Dateien kopiert) +``` + +Am Ende wird eine Zusammenfassung ausgegeben: + +``` +Fertig! 100 Dateien geprĂŒft, 42 Dateien kopiert. +``` + +--- + +## ⚙ Anpassungen + +### Zielverzeichnis Ă€ndern + +StandardmĂ€ĂŸig wird das Zielverzeichnis `./consolidated` verwendet. Um es anzupassen, Ă€ndere die Variable `TARGET_DIR` im Skript: + +```bash +TARGET_DIR="/pfad/zum/zielverzeichnis" +``` + +### Nur bestimmte Dateitypen kopieren + +Falls nur bestimmte Dateiendungen (z. B. `.txt`) kopiert werden sollen, passe den `find`-Befehl an: + +```bash +find "$dir" -type f -name "*.txt" | while read -r file; do +``` + +--- + +## ⚠ Wichtige Hinweise + +1. **Testlauf**: FĂŒhre das Skript zunĂ€chst in einer **Kopie deiner Daten** aus, um sicherzustellen, dass es wie erwartet funktioniert. +2. **Sicherheit**: Das Skript ĂŒberschreibt keine Dateien außerhalb des `consolidated`-Verzeichnisses. +3. **Leere Verzeichnisse**: Leere Verzeichnisse werden nicht kopiert. +4. **Sonderzeichen in Dateinamen**: Das Skript sollte mit den meisten Sonderzeichen in Dateinamen umgehen können. Bei Problemen prĂŒfe die Bash-Umgebung. + +--- + +## 🐛 Fehlerbehebung + +### Problem: Skript findet keine Verzeichnisse + +- **Ursache**: Die Verzeichnisse entsprechen nicht dem Format `JJJJ-MM-TT-SS` (z. B. `2026-05-04-10`). +- **Lösung**: Stelle sicher, dass die Verzeichnisnamen dem erwarteten Muster entsprechen. + +### Problem: Keine Berechtigung zum AusfĂŒhren + +- **Lösung**: FĂŒhre `chmod +x consolidate_monthly_files_with_progress.sh` aus. + +### Problem: Fortschrittsbalken wird nicht angezeigt + +- **Ursache**: Einige Terminals unterstĂŒtzen `` (Carriage Return) nicht korrekt. +- **Lösung**: Teste das Skript in einem anderen Terminal (z. B. `gnome-terminal` oder `xterm`). + +--- + +## 📜 Lizenz + +Dieses Skript ist **frei verwendbar**. Keine Garantie oder Haftung fĂŒr Datenverlust oder andere Probleme. + +--- + +## 💬 Kontakt + +Falls du Fragen oder AnpassungswĂŒnsche hast, lass es mich wissen! \ No newline at end of file