diff --git a/README.md b/README.md index 7465432..e890e87 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,3 @@ # batch-rename-from-csv +This script renames files in a folder with the Information out of a csv-file. The renamed files were saved in a folder-structure, generated from the csv-entries. \ No newline at end of file diff --git a/batch_rename_from_csv.sh b/batch_rename_from_csv.sh new file mode 100755 index 0000000..8d657c3 --- /dev/null +++ b/batch_rename_from_csv.sh @@ -0,0 +1,40 @@ +#!/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" +