3.7 KiB
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
- Skript herunterladen oder erstellen:
Speichere das Skript alsconsolidate_monthly_files_with_progress.shin deinem Projektverzeichnis. - Ausführbar machen:
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:
./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:
TARGET_DIR="/pfad/zum/zielverzeichnis"
Nur bestimmte Dateitypen kopieren
Falls nur bestimmte Dateiendungen (z. B. .txt) kopiert werden sollen, passe den find-Befehl an:
find "$dir" -type f -name "*.txt" | while read -r file; do
⚠️ Wichtige Hinweise
- Testlauf: Führe das Skript zunächst in einer Kopie deiner Daten aus, um sicherzustellen, dass es wie erwartet funktioniert.
- Sicherheit: Das Skript überschreibt keine Dateien außerhalb des
consolidated-Verzeichnisses. - Leere Verzeichnisse: Leere Verzeichnisse werden nicht kopiert.
- 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.shaus.
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-terminaloderxterm).
📜 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!