2026-08-20 08:52:01 +00:00
2026-08-20 08:51:13 +00:00
2026-08-20 08:52:01 +00:00

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:
 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

  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!

Description
No description provided
Readme 26 KiB
Languages
Shell 100%