konsolidieren.sh aktualisiert
This commit is contained in:
@ -28,7 +28,10 @@ LOG_FILE="" # optional: z. B. LOG_FILE=archiv.log setzen
|
|||||||
log() {
|
log() {
|
||||||
local msg="[$(date '+%Y-%m-%d %H:%M:%S')] $*"
|
local msg="[$(date '+%Y-%m-%d %H:%M:%S')] $*"
|
||||||
echo "$msg"
|
echo "$msg"
|
||||||
[ -n "$LOG_FILE" ] && echo "$msg" >> "$LOG_FILE"
|
if [ -n "$LOG_FILE" ]; then
|
||||||
|
echo "$msg" >> "$LOG_FILE"
|
||||||
|
fi
|
||||||
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
usage() { echo "Usage: $0 [-n] <archiv-verzeichnis>" >&2; exit 1; }
|
usage() { echo "Usage: $0 [-n] <archiv-verzeichnis>" >&2; exit 1; }
|
||||||
@ -83,7 +86,8 @@ merge_into() {
|
|||||||
TODAY_MONTH="$(date +%Y-%m)"
|
TODAY_MONTH="$(date +%Y-%m)"
|
||||||
CLOSED="$(last_closed_month)"
|
CLOSED="$(last_closed_month)"
|
||||||
|
|
||||||
declare -A MONTH_FOLDERS=()
|
# abgeschlossene Monate ermitteln, deren Tagesordner existieren
|
||||||
|
declare -A SEEN=()
|
||||||
for d in "$ARCHIVE"/*; do
|
for d in "$ARCHIVE"/*; do
|
||||||
[ -d "$d" ] || continue
|
[ -d "$d" ] || continue
|
||||||
base="$(basename "$d")"
|
base="$(basename "$d")"
|
||||||
@ -93,13 +97,20 @@ for d in "$ARCHIVE"/*; do
|
|||||||
if [[ "$month" > "$CLOSED" ]]; then
|
if [[ "$month" > "$CLOSED" ]]; then
|
||||||
continue # aktueller Monat / Zukunft: nicht anfassen
|
continue # aktueller Monat / Zukunft: nicht anfassen
|
||||||
fi
|
fi
|
||||||
MONTH_FOLDERS["$month"]+="$d"$'\n'
|
SEEN["$month"]=1
|
||||||
done
|
done
|
||||||
|
|
||||||
# pro Monat: aelteste zuerst mergen, neueste gewinnt
|
# pro Monat: aelteste zuerst mergen, neueste gewinnt
|
||||||
for month in "${!MONTH_FOLDERS[@]}"; do
|
for month in "${!SEEN[@]}"; do
|
||||||
mapfile -t sources < <(sort <<< "${MONTH_FOLDERS[$month]}" | grep -v '^$')
|
|
||||||
dest="$ARCHIVE/$month"
|
dest="$ARCHIVE/$month"
|
||||||
|
# Tagesordner dieses Monats per Glob einsammeln (Glob liefert sie sortiert)
|
||||||
|
sources=()
|
||||||
|
for d in "$ARCHIVE/$month"-*; do
|
||||||
|
[ -d "$d" ] || continue
|
||||||
|
[[ "$(basename "$d")" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}-[0-9]{2}$ ]] || continue
|
||||||
|
sources+=("$d")
|
||||||
|
done
|
||||||
|
[ ${#sources[@]} -gt 0 ] || continue
|
||||||
if [ -e "$dest" ]; then
|
if [ -e "$dest" ]; then
|
||||||
# Monatsordner existiert schon (Rest vom letzten Lauf?) -> einfach dazumergen
|
# Monatsordner existiert schon (Rest vom letzten Lauf?) -> einfach dazumergen
|
||||||
merge_into "$dest" "${sources[@]}"
|
merge_into "$dest" "${sources[@]}"
|
||||||
|
|||||||
Reference in New Issue
Block a user