Wie automatisiert 1300 Ordner anlegen + Benennung nach Datei, Dateien zuordnen + zuletzt umbenennen?

H

helpNetti

Mitglied
Thread Starter
Dabei seit
04.11.2022
Beiträge
3
Reaktionspunkte
0
Hallo,

ich habe hier eine kniffelige Aufgabe zu lösen, die meine rudimentären Apple script bzw. Automator Kenntnisse sprengt 💥😵‍💫:

Ich habe hier 1300 Bild Dateien, die mit einer Projekt ID benannt sind. Und jetzt kommt's:
  1. Alle Dateien müssen jeweils einen eigenen neuen Ordner erhalten und darin einsortiert werden, die
  2. mit jeweils dem selben Namen wie die Datei benannt werden müssen (ProjektID_Projektnummer.jpg bekommt einen Ordner: /ProjektID_Projektnummer)
  3. Wenn das geschafft ist, muss jede Datei der 1300 Ordner nach dem gleichen Namen umbenannt werden zu: productimage.jpg (deshalb kann man es nicht vorher machen)
Ihr erkennt sicher gleich die Problematik und weshalb ich das nicht manuell machen kann, wenn ich nicht Tage lang damit beschäftigt sein möchte.

🙏 Hat jemand einen Lösungsvorschlag hierfür oder Ähnliches schon mal zu bewältigen gehabt? Ich sage schon mal 1300x Dank!

P.s. Bitte nicht fragen weshalb der Aufriss, das muss leider so sein, sonst funktioniert ein historisch gewachsener Daten-Upload nicht... 🙄
 
Zuletzt bearbeitet:
Hallo,

genau diese Anforderung gab es vor geraumer Zeit hier. Schaue mal in der Suche/Historie.

Viele Grüße
 
Bestimmt der gleiche.. Solche Ordnerstrukturen werden eigentlich nur in MYSQL verwendet.. naja kein Plan
 
Hi, willkommen im Forum.
Ein pragmatischer Ansatz ohne Programmierkenntnisse:
1. Backup der Originale machen !!!
2. Alle Bilder sind in einem Verzeichnis?
3: im Terminal (Terminal.app) mit "find" eine Liste aller Dateien erstellen
Code:
cd bildverzeichnis
find > liste.txt
4. Liste kopieren. Die Kopie mit einem "einfachen" Texteditor öffnen, der plain text kann. TextWrangler oder ähnliches. Zur Not auch TextEdit (heißt das so?)
5. Im Texteditor mit suchen/ersetzen einfach .jpeg durch nix ersetzen
6. Im Texteditor den Zeilenanfang durch "mkdir " ersetzen (zur Not kann man sowas auch in Excel mit "nach unten auffüllen" erstellen und dann zusammenkopieren.
7. den Inhalt der Datei ins Terminal kopieren und return drücken -> die Verzeichnisse wurden erstellt.

8. die Originalliste öffnen und in Excel oder Numbers kopieren in ein Arbeitsblatt in Spalte 2 und 4
9. in Spalte 4 die Dateiendung mit Punkt wieder wegschneiden
10. in der Tabelle (Excel/Numbers) dann in spalte 1 einfügen: mv (leerzeichen nach mv!)
11: in Spalte 5: /productimage.jpg
12: alles markieren, in einen Texteditor kopieren und mit suchen/ersetzen Leerzeichen und Tabs entfernen, so dass jede Zeile so aussieht:
Code:
mv dateiname.jpg dateiname/productimage.jpg
das ganze wieder ins Terminal kopieren und mit Return bestätigen.

Die Umsetzung geht schneller, als ich das hier geschrieben habe.

Edit: Wichtig: das ist eine grobe Anleitung, also versuche, die Schritte zu verstehen und dann wirst du sicher den einen oder anderen kleinen Fehler finden. Darum nur auf einer Kopie der Daten arbeiten...
 
  • Gefällt mir
Reaktionen: HJOrtmann, tigion, Nutzloser und eine weitere Person
Hallo und schon mal 1000 Dank für die Ausführung! Bin gerade erst wieder am Platz und werde dann mal versuchen das umzusetzen...

Und ja, bin tatsächlich das 1. Mal hier und habe selbstverständlich zuerst nach einem ähnlich Beitrag gesucht! Doch jeder verschlagwortet das halt anders, habe es nicht gefunden @little_pixel wenn da also jemand das Gleiche gelesen hat, dann immer her damit!

Die Dateien liegen einfach alle zusammen in einem Ordner - nix MYSQL...

- LG
 
Mit folgendem Mini-Script im Terminal (in dem Ordner, in dem die Fotos liegen) kannst du das bewerkstelligen:
Bash:
for pic in *.jpg; do mkdir $(basename "$pic" .jpg); mv "$pic" $(basename "$pic" .jpg)/productimage.jpg; done
Sicherheitshalber natürlich vorher Daten sichern.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: ruerueka, Schiffversenker und lisanet
Auch die Frage schon ein paar Tage her ist, lässt sich das Vorgehen von @ruerueka mit einem kleinen Shellscript automatisieren

Bash:
#!/bin/bash

for i in *.jpg; do

dir=$(basename "$i" .jpg)
mkdir "$dir"
mv "$i" "$dir/productimage.jpg"

done

Das script legst du in das Verzeichnis in welchem deine JPEGs liegen und startest es von dort aus.

Wenn du nicht weißt, wie man das ausfürhbar macht oder aufruft oder sonst was, frage nach.
 
  • Gefällt mir
Reaktionen: ruerueka und Schiffversenker
Mit folgendem Mini-Script im Terminal (in dem Ordner, in dem die Fotos liegen) kannst du das bewerkstelligen:
Bash:
for pic in *.jpg; do mkdir $(basename $pic .jpg); mv $pic $(basename $pic .jpg)/productimage.jpg; done
Sicherheitshalber natürlich vorher Daten sichern.

da warst du etwas schneller.

Ein Tipp noch für dein script. Da man nicht 100% unterstellen kann, dass die Dateinamen ohne Leerzeichen sind, sollten alle Variablen gequotet werden.
 
  • Gefällt mir
Reaktionen: ruerueka und sailingHobbit
da warst du etwas schneller.

Ein Tipp noch für dein script. Da man nicht 100% unterstellen kann, dass die Dateinamen ohne Leerzeichen sind, sollten alle Variablen gequotet werden.
Guter Einwand, danke dir. 👍 Hab es entsprechend angepasst, falls der TE es oben raus kopiert.
 
  • Gefällt mir
Reaktionen: ruerueka
Ihr seid super! Jetzt konnte ich gar nicht alles ausprobieren, aber mit @ruerueka hat es schon gleklappt. - Vielen Dank!!!
Die Umbenennung der 1300 Dateien in den einzelnen Ordnern habe ich dann noch schneller über die Stapelumbenennung in der Adobe Bridge erledigen können.
Viele Grüße ☀️
 
Zurück
Oben Unten