140 lines
3.7 KiB
Markdown
140 lines
3.7 KiB
Markdown
# 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! |