Guides

Eine Ordnerstruktur, die eine Maschine versteht

Vier Angaben, eine Reihenfolge, drei Verbote. Und ein Trockenlauf über zwölf gewachsene Dateien, der zwei Fehler zeigt, die sonst still Dokumente beim falschen Kunden abgelegt hätten.

André Loreth8 Min. Lesezeit

Stand
22. September 2026
Eine Ordnerstruktur, die eine Maschine versteht
Teilen

Jeder Ordner, der lange genug existiert, sieht gleich aus: „scan0012.pdf“ neben „Angebot_Kern_final_FINAL.docx“ neben „kopie von Angebot Lindgruber.docx“. Ein Mensch findet sich darin zurecht, weil er sich erinnert. Eine Maschine findet gar nichts, und genau daran scheitert jeder Ablauf, der auf solche Dateien zugreifen soll.

Danach weißt du:

  • welche vier Angaben in einen Dateinamen gehören und in welcher Reihenfolge
  • warum ein Aufräumskript grundsätzlich erst vorschlägt und nie sofort umbenennt
  • warum die Aufräumaktion der falsche Ort ist, um das Problem zu lösen

Was eine Maschine an einem Namen braucht

Vier Angaben, immer in derselben Reihenfolge:

JJJJ-MM-TT_Kunde_Belegart_Kennung.endung

2026-08-01_Bauer-Elektrotechnik_Rechnung_08-2026.pdf
  • Das Datum des Dokuments, nicht der Tag, an dem jemand gespeichert hat. Ist nur der Monat bekannt, gilt der Erste des Monats.
  • Der Kunde, so wie er im Register steht: ein Schlüssel je Kunde, Bindestrich statt Leerzeichen, ohne Rechtsform.
  • Die Belegart aus einer festen Liste: Rechnung, Angebot, Lieferschein, Mahnung, Gutschrift, Vertrag, Auftragsbestätigung. Wer eine neue braucht, ergänzt die Liste, nicht den Dateinamen.
  • Die Kennung, also die Nummer, die auf dem Dokument steht. Sie ist die einzige Angabe, die fehlen darf; dann steht dort „ohne-kennung“.

Das Datum steht vorn, weil dann jede Dateiliste von selbst chronologisch sortiert ist — ohne Datenbank, ohne Programm, in jedem Dateimanager der Welt. Und es steht als Jahr-Monat-Tag da, weil 03.09.2026 in einer Sortierung vor 14.08.2026 landet und 2026-09-03 nicht. Die vier Angaben trennt ein Unterstrich, innerhalb einer Angabe gibt es nur Bindestriche; so kann ein Programm den Namen zerlegen und weiß immer, was an welcher Stelle steht.

Dazu drei Regeln, die unspektakulär sind und alles entscheiden: keine Leerzeichen, keine Umlaute, keine Wertungen. „final“, „neu“, „Kopie von“ und „(1)“ sagen nichts darüber, was in der Datei steht, sondern nur etwas über den Moment, in dem jemand sie gespeichert hat. Wer sie im Namen zulässt, hat in zwei Jahren drei Dateien mit „final“ im Namen und weiß bei keiner, welche gilt.

Der Trockenlauf

Die wichtigste Eigenschaft eines Aufräumskripts ist, dass es beim ersten Aufruf nichts tut. Es liest den Ordner, schlägt für jede Datei einen Namen vor und schreibt die Liste auf den Bildschirm. Erst ein zweiter Aufruf mit einem ausdrücklichen Zusatz benennt um.

python3 benenne.py               # schlägt vor
python3 benenne.py --anwenden    # benennt um

Das klingt nach einer Vorsichtsmaßnahme und ist in Wahrheit das eigentliche Werkzeug. Der Vorschlag ist die Stelle, an der man sieht, was die Regeln aus den eigenen Daten machen — und bei uns hat der erste Trockenlauf über zwölf Dateien zwei Fehler sichtbar gemacht, die beide unbemerkt geblieben wären. Im Paket zu diesem Beitrag liegt davon nur die erste Hälfte: der Prüfer, der vorschlägt. Den Zusatz, der umbenennt, haben wir bewusst nicht mitgegeben; warum, steht weiter unten.

Der erste Vorschlag, und was daran falsch war

  ?  2026-08-31 Umsatz.csv                     Kunde nicht erkennbar
  ->  Angebot_Kern_final_FINAL.docx             2026-09-12_Kern-Hausverwaltung_Angebot_final-FINAL.docx
  ?  IMG_20260814_101233.jpg                   Kunde und Belegart nicht erkennbar
  ->  Lieferschein Özdemir.pdf                  2026-09-12_Ozdemir-Sanitaer_Lieferschein_ohne-kennung.pdf
  ->  Rechnung Bauer Elektro 08-2026.pdf        2026-08-01_Bauer-Elektrotechnik_Rechnung_Elektro-08-2026.pdf
  ->  Rechnung Müller 3.pdf                     2026-09-12_Moeller-Sohn_Rechnung_3.pdf
  ->  kopie von Angebot Lindgruber.docx         2026-09-12_Lindgruber-Bau_Angebot_ohne-kennung.docx
  ?  scan0012.pdf                              Kunde und Belegart nicht erkennbar

  8 benannt, 4 zur Prüfung  (nichts verändert, --anwenden fehlt)

Acht von zwölf benannt, vier zur Prüfung. Sieht nach einem guten Ergebnis aus. Es sind zwei Fehler darin, und beide hätten Dokumente still an die falsche Stelle gelegt.

Der erste steht in Zeile sechs: „Rechnung Müller 3.pdf“ wird zu „Moeller-Sohn“. Müller und Möller sind zwei verschiedene Firmen. In der Zuordnungstabelle stand „müller“ als Schreibvariante von „Möller“ — jemand hatte beim Anlegen an einen Tippfehler gedacht. Die Rechnung wäre unter dem falschen Kunden gelandet, und niemand hätte es gemerkt, weil der Dateiname danach ordentlich aussieht.

Der zweite steht überall dort, wo das Datum 2026-09-12 lautet — dem Tag des Aufräumens. Trägt der Dateiname kein Datum, hatte das Skript das Änderungsdatum der Datei genommen. Bei einem gewachsenen Ordner ist das fast immer falsch: Es sagt, wann die Datei zuletzt kopiert oder synchronisiert wurde, nicht wann das Dokument datiert ist. Acht Dokumente hätten dasselbe erfundene Datum getragen.

Die strenge Fassung, und warum sie fast nichts tut

Beide Fehler sind schnell behoben: den falschen Eintrag aus der Tabelle nehmen, und beim Datum nicht mehr raten — kein Datum im Namen heißt zur Prüfung. Die strenge Fassung ist der Prüfer im Paket, pruefe_namen.py. Sein Lauf vom 18. September 2026 über dieselben zwölf Namen:

  ?   2026-08-31 Umsatz.csv                      Kunde und Belegart nicht erkennbar
  ?   Angebot Bauer Halle 2 (1).docx             Datum nicht erkennbar
  ?   Angebot_Kern_final_FINAL.docx              Datum nicht erkennbar
  ?   Dokument1.docx                             Datum und Kunde und Belegart nicht erkennbar
  ?   IMG_20260814_101233.jpg                    Kunde und Belegart nicht erkennbar
  ?   Lieferschein Özdemir.pdf                   Datum nicht erkennbar
  ?   Lieferschein_Lindgruber_neu.pdf            Datum nicht erkennbar
  ?   Mahnung Kern Hausverwaltung.pdf            Datum nicht erkennbar
  ->  Rechnung Bauer Elektro 08-2026.pdf         2026-08-01_Bauer-Elektrotechnik_Rechnung_08-2026.pdf
  ?   Rechnung Müller 3.pdf                      Datum und Kunde nicht erkennbar
  ?   kopie von Angebot Lindgruber.docx          Datum nicht erkennbar
  ?   scan0012.pdf                               Datum und Kunde und Belegart nicht erkennbar

  0 in Ordnung, 1 benannt, 11 zur Prüfung  (nichts verändert; dieses Skript benennt nie um)
  Vorschlagsliste geschrieben: umbenennungsvorschlag.csv

Eine von zwölf. Das ist der ehrliche Zustand: Ein Skript, das nichts rät, kann aus einem gewachsenen Ordner fast nichts machen, weil in den Namen fast nichts steht. Wer die lockere Fassung nimmt, räumt acht Dateien auf und legt zwei davon falsch ab. Diese Abwägung kann einem niemand abnehmen, und der Trockenlauf ist der Ort, an dem man sie bewusst trifft statt versehentlich.

Der Kern des Prüfers ist eine Funktion, die mehr Ausgänge ohne Vorschlag hat als mit:

def vorschlag(name):
    """(neuer_name, grund). Ohne Datum, Kunde oder Belegart gibt es keinen Vorschlag."""
    stamm, endung = os.path.splitext(name)
    datum, datum_roh, datum_voll = datum_aus(stamm)
    kunde, kunde_roh = kunde_aus(stamm)
    belegart, belegart_roh = belegart_aus(stamm)
    fehlt = [n for n, w in (("Datum", datum), ("Kunde", kunde), ("Belegart", belegart)) if not w]
    if fehlt:
        return None, " und ".join(fehlt) + " nicht erkennbar"

Das Datum kommt nur aus dem Namen, nie aus dem Dateisystem. Der Kunde kommt nur aus dem Register, und das Register kennt nur Schreibvarianten. Fehlt eine der drei Angaben, gibt es keinen Namen, sondern einen Grund.

Der Prüfer über den ersten Vorschlag

Weil der Prüfer auch fertige Namen gegen die Konvention hält, haben wir ihm die fünf Namen vorgelegt, die die lockere Fassung oben vorgeschlagen hatte:

  ->  2026-09-12_Kern-Hausverwaltung_Angebot_final-FINAL.docx 2026-09-12_Kern-Hausverwaltung_Angebot_ohne-kennung.docx
  ?   2026-09-12_Ozdemir-Sanitaer_Lieferschein_ohne-kennung.pdf Kunde nicht erkennbar
  ok  2026-08-01_Bauer-Elektrotechnik_Rechnung_Elektro-08-2026.pdf
  ok  2026-09-12_Moeller-Sohn_Rechnung_3.pdf
  ok  2026-09-12_Lindgruber-Bau_Angebot_ohne-kennung.docx

  3 in Ordnung, 1 benannt, 1 zur Prüfung  (nichts verändert; dieses Skript benennt nie um)

Zwei Dinge fängt er: die Wertung „final-FINAL“, die die lockere Fassung als Kennung durchgereicht hatte, und „Ozdemir“, bei dem der Umlaut nicht ausgeschrieben, sondern weggelassen wurde — „Ozdemir-Sanitaer“ steht so in keinem Register. Und eines fängt er nicht, und das ist die wichtigere Zeile: „2026-09-12_Moeller-Sohn_Rechnung_3.pdf“ ist in Ordnung. Der Name entspricht der Konvention, der Kunde steht im Register, das Datum ist gültig. Dass es die Rechnung von Müller ist und das Datum der Tag des Aufräumens, sieht kein Prüfer der Welt dem Namen an. Genau deshalb darf der Schritt davor nicht raten.

Die Prüfliste ist das eigentliche Ergebnis

Der Ausweg liegt nicht darin, die Regeln schlauer zu machen, sondern darin, die Prüfliste als das zu nehmen, was sie ist: eine Arbeitsliste. Elf Einträge mit einem Grund daneben arbeitet ein Mensch in zehn Minuten durch. Der Prüfer schreibt sie auf Wunsch als CSV mit vier Spalten: alter Name, Status, Vorschlag, Grund.

Und die Gründe stapeln sich. Bei neun der elf Einträge fehlt das Datum, bei fünf der Kunde, bei vier die Belegart. Das sagt sofort, wo sich Aufwand lohnt: Wer das Rechnungsdatum aus der PDF liest statt aus dem Dateinamen, löst sechs der elf Fälle auf einmal; bei den übrigen fünf ist nicht das Datum das Problem, sondern der Kunde. Das ist eine andere Baustelle, aber jetzt eine, von der man weiß, dass sie sich rechnet.

Der Ort, an dem das Problem wirklich gelöst wird

Das Aufräumen eines gewachsenen Ordners ist Archäologie. Man kann nur herausholen, was zufällig im Namen steht, und das ist bei alten Dateien wenig. Die Konvention gewinnt man dort nicht zurück.

Wo sie entsteht, ist der Moment, in dem ein Dokument ankommt. Eine Rechnung, die per Mail hereinkommt, trägt ihr Datum, ihren Absender und ihre Nummer strukturiert bei sich — dort kostet der richtige Name nichts, weil alle vier Angaben schon da sind. Deshalb gehört diese Konvention in den Eingangsablauf und nicht in eine Aufräumaktion. Wie das für Rechnungen aussieht, beschreibt der Beitrag zu Rechnungen aus dem Postfach; er benennt nach genau dieser Regel. Die Aufräumaktion macht man einmal, mit einer Prüfliste, und danach nie wieder.

Was der Prüfer nicht kann

  • Er liest nicht in die Datei hinein. Steht das Datum nur auf der ersten Seite der PDF, sieht er es nicht. Das ist Absicht: Der Prüfer arbeitet in einer Sekunde über tausend Namen; wer Inhalte liest, baut den Eingangsablauf.
  • Er erkennt keinen falschen Kunden, wenn der Name ordentlich aussieht. Das zeigt die Möller-Zeile oben.
  • Er benennt nicht um. Es gibt keinen Schalter dafür, auch keinen versteckten. Wer die CSV abgearbeitet hat, benennt von Hand oder baut sich den Schritt bewusst selbst — und zwar so, dass er nie überschreibt.

Zum Nachbauen

Das Paket zu diesem Beitrag enthält die Konvention als Regeltext, den Prüfer, das Register und die zwölf Namen. Entpacken, das Register mit den eigenen Kunden füllen, dann den Prüfer über einen Ordner laufen lassen:

  • konvention.md: die vier Angaben, die Reihenfolge, die drei Verbote und was die Konvention nicht regelt
  • pruefe_namen.py: der Prüfer. Nimmt eine Namensliste oder einen Ordner, meldet Verstöße, schlägt vor, wo alles erkennbar ist, und schreibt mit --csv die Prüfliste
  • kunden.json: das Register mit Schreibvarianten und die Liste der Belegarten. Müller steht absichtlich nicht bei Möller
  • testdaten/gewachsene_dateien.txt: die zwölf Namen aus diesem Beitrag
  • testdaten/erster_vorschlag.txt: die Namen des ersten lockeren Vorschlags, zum Gegenprüfen
  • umbenennungsvorschlag.csv: die Prüfliste aus dem Lauf oben

Eine Ordnerstruktur, die eine Maschine versteht: Konvention, Prüfskript und zwölf gewachsene Dateinamen

ZIP · 7,9 kB

Die Namenskonvention als Regeltext, ein Prüfskript mit Trockenlauf und Vorschlagsliste, das Kundenregister und die zwölf Dateinamen aus dem Beitrag.

Herunterladen

Stand dieses Artikels

Der erste Trockenlauf mit der lockeren Fassung ist am 12. September 2026 mit Python 3.11.15 gelaufen; seine Ausgabe steht oben unverändert. Der Prüfer im Paket ist die strenge Fassung; beide Läufe damit stammen vom 18. September 2026 mit Python 3.12.2, nur Standardbibliothek. Die lockere Fassung mit Änderungsdatum und Ähnlichkeitstabelle liefern wir nicht mit. Die Kunden- und Belegartentabelle ist ein Beispiel und muss für jeden Betrieb neu geschrieben werden. Geprüft wurde gegen die zwölf Namen aus dem Beitrag, nicht gegen einen echten Ordner mit tausend Dateien.

Häufige Fragen

Wie sollten Dateinamen in einem Unternehmen aufgebaut sein?

Datum zuerst als JJJJ-MM-TT, dann Kunde, dann Belegart, dann eine Kennung. Keine Leerzeichen, keine Umlaute, und keine Wertungen wie final oder neu. Dadurch sortiert jede Dateiliste von selbst chronologisch und jedes Programm kann die Angaben auseinandernehmen.

Kann man einen gewachsenen Ordner automatisch aufräumen lassen?

Nur teilweise, und nur mit Trockenlauf. Aus alten Dateinamen lässt sich meist nicht genug herauslesen, um sicher zu benennen. Was nicht eindeutig ist, gehört auf eine Prüfliste und nicht in eine geratene Zuordnung.

Warum ist das Änderungsdatum einer Datei kein guter Ersatz?

Weil es sagt, wann die Datei zuletzt kopiert oder synchronisiert wurde, nicht wann das Dokument datiert ist. Nach einem Umzug auf einen neuen Server tragen alle Dateien dasselbe Datum.

  • Was ein automatisierter Ablauf wirklich kostet

    Was ein automatisierter Ablauf wirklich kostet

    Gefragt wird nach dem Preis pro Anfrage. Der macht rund ein Prozent aus. Drei Blöcke, eine durchgerechnete Beispielrechnung — und die Menge, an der alles kippt.

  • Warum es überzeugend falsch liegt

    Warum es überzeugend falsch liegt

    Eine erfundene Antwort klingt genau wie eine richtige. Abstellen lässt sich das nicht, aber ein Ablauf lässt sich so bauen, dass ein Irrtum auffällt. Vier Bauformen, an sieben Fällen mit einem kleinen Modell ausprobiert.

  • Was so ein Modell eigentlich tut

    Was so ein Modell eigentlich tut

    „Das weiß die KI doch." Ein Sprachmodell weiß nichts, es setzt fort. Was daraus folgt, ist die eine Unterscheidung, mit der sich fast jedes Vorhaben vorab einschätzen lässt.

© 2026 ernsthaft.ai, ein Angebot der abi group GmbH

Alle genannten Produktnamen, Logos und Marken sind Eigentum der jeweiligen Inhaber. Ihre Nennung bedeutet keine Empfehlung oder Verbindung zu ernsthaft.ai oder der abi group GmbH.

Build v1.10.0+e670d45