README.md hinzugefügt
This commit is contained in:
140
README.md
Normal file
140
README.md
Normal file
@ -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!
|
||||
Reference in New Issue
Block a user