batch-rename-from-csv/batch_rename_from_csv.sh
2024-08-17 23:39:57 +02:00

41 lines
1.7 KiB
Bash
Executable File

#!/bin/bash
# Pfad zur CSV-Datei
csv_file="pfad/zur/datei.csv"
# Basisverzeichnis, in dem sich die Dateien und das Skript befinden
base_dir="pfad/zu/deinem/verzeichnis"
# Liest die CSV-Datei Zeile für Zeile ein
# Alle Spaltennamen der CSV müssen hier in der richtigen Reihenfolge genannt werden, auch wenn sie nicht benötigt werde
# Hinter IFS ist das Trennzeichen in der CSV-Datei einzusetzen (, oder ;)
while IFS=',' read -r original_dateiname schlagwort1 schlagwort2 datum_zeit; do
# Entferne Anführungszeichen, falls sie in der CSV-Datei vorhanden sind
original_dateiname=$(echo "$original_dateiname" | tr -d '"')
schlagwort1=$(echo "$schlagwort1" | tr -d '"')
schlagwort2=$(echo "$schlagwort2" | tr -d '"')
datum_zeit=$(echo "$datum_zeit" | tr -d '"')
# Extrahiere das Datum (die ersten 10 Zeichen)
# In der Datei ist das Datum (mit Zeit) im Format "2024-07-25 13:31:00" vorhanden.
datum=${datum_zeit:0:10}
# Erstelle den neuen Dateinamen im Schema "Datum_OriginalDateiname"
new_filename="${datum}_${original_dateiname}"
# Erstelle das Zielverzeichnis nach dem Schema "Schlagwort2/Jahr/Schlagwort1"
zielverzeichnis="$base_dir/$schlagwort2/${datum:0:4}/$schlagwort1"
# Erstelle das Verzeichnis, falls es noch nicht existiert
mkdir -p "$zielverzeichnis"
# Verschiebe die Datei an den neuen Speicherort mit dem neuen Namen
if [[ -f "$base_dir/$original_dateiname" ]]; then
mv "$base_dir/$original_dateiname" "$zielverzeichnis/$new_filename"
echo "Datei umbenannt und verschoben: $zielverzeichnis/$new_filename"
else
echo "Datei nicht gefunden: $base_dir/$original_dateiname"
fi
done < "$csv_file"