Bash-Skript zum Anlegen von Ordnern und Unterordnern mit Jahreszahlen

Zum Jahreswechsel lege ich mir eine Reihe von Verzeichnissen / Ordnern an, die meinen gesamten Schriftverkehr wie Angebote und Rechnungen im neuen Jahr aufnehmen werden. Meine Ordnerstruktur wiederholt sich dabei praktisch Jahr für Jahr. Im Ordner »mobilitaet« befinden sich vier weitere Ordner. Da ich von solchen sich wiederholenden Handgriffen schnell genervt bin, habe ich ein Bash-Script geschrieben, das mir die Arbeit abnimmt.

Das Ziel des Scripts: eine bewährte Ordnerstruktur mit neuer Jahreszahl erstellen

bash script zum erstellen von Ordnern

Hier das Ergebnis nachdem das Script gelaufen ist: 15 Ordner sind damit per Knopfdruck angelegt. Die Anzahl und die Verschachtelungen können bei Bedarf angepasst werden.

1. Den Ordner »rechnungen-briefe-18« anlegen

bash script: den übergeordneten Ordner händisch anlegen

Hier jetzt der Ablauf im Einzelnen: zunächst erstelle ich händisch einen neuen leeren Ordner »rechnungen-briefe-18«

2. Den Ordner im Terminal öffnen

Screenshot: Den Ordner im Terminal öffnen
  1. Ich arbeite statt mit dem Finder mit dem genialen PathFinder (cocoatech.com): mit einem Rechtsklick kann ich damit eine Kontextmenü öffnen, in dem mir der Befehl »Im Terminal öffnen« angeboten wird. Alternativ könnt Ihr Euch den Ordner auch auf das Terminal-Icon im Dock oder in eine neue Shell ziehen. Dadurch wird auch der Ordner im Terminal geöffnet. Und natürlich könnt ich Ihr als dritte Möglichkeit auch im Terminal selbst zu dem Ordner navigieren ;-)

3. Bin ich im richtigen Verzeichnis?

Screenshot Terminal: pwd checkt, ob ich auch wirklich im richtigen Verzeichnis bin
  1. Um sicher zu gehen, dass ich auch im richtigen Verzeichnis bin, habe ich pwd für »print working directory« eingegeben und Enter gedrückt.
  2. Die nächste Zeile bestätigt den korrekten Ordner

4. Script ausführen

Screenshot Terminal: das Script ausführen

Jetzt brauche ich nur noch das Script »make-directories-new-year.sh« aufrufen und mit Enter laufen lassen. Das Script habe ich in einem unsichtbaren .bin-Ordner abgelegt und per »chmod +x« ausführbar gemacht. Den .bin-Ordner habe ich in meine PATH-Variable aufgenommen, damit ich von beliebigen Verzeichnissen meines Rechners darauf zugreifen kann. (Das wird zwar bei diesem Script nicht der Fall sein, aber sowohl zum Wiederauffinden als auch zur Versionierung finde ich einen zentralen Scriptordner praktischer, als die Scripte in verschiedenen Ordnern liegen zu haben.)
Nach Ausführung des Scripts sieht die Ordnerstruktur wie der Screenshot in (1) aus.

5. Das Script

Und hier nun das eigentliche Script:

#!/bin/bash
# Die Variable nimmt das Argument auf, das vom User eingegeben wurde
year=$1
# Test, ob der User ein Argument eingeben hat
if [ -z $year ];
then
# Falls der User kein Argument eingeben hat, wird er jetzt dazu aufgefordert.
echo "Please insert name for year as argument";
exit 0;
else
# Anlage eines Arrays mit den Ordnernamen der ersten / oberen Hierarchie
declare -a new_directories=(angebote briefe haus mitgliedsbeitraege mobilitaet quittungen rechnungen-extern privat sipgate unitymedia webhostone)
# Anlage eines Arrays mit den Ordnernamen der zweiten Hierarchie
declare -a new_directories_mobilitaet=(cambio drivenow flinkster handyticket)
# Die Ordner der ersten Hierarchie anlegen
for item in ${new_directories[*]}
do
mkdir $item-$year
done
# Die Ordner der zweiten Hierarchie im Ordner »Ordner-[Jahreszahl]« anlegen
for item in ${new_directories_mobilitaet[*]}
do
mkdir mobilitaet-$year/$item-$year
done
fi

Wie so oft beim Coden: wenn man weiß, wie’s geht, ist es einfach ;-)
Alles klar? Habt Ihr Anmerkungen oder Fragen? Schreibt mir gerne in den Kommentaren!

PS: Hier noch zwei Links zu einer alternativen Herangehensweise:

Porträtfoto Grafikdesigner und Webdesigner Karsten Geisler

Karsten Geisler

Grafik-/Webdesigner, InDesign-Freak, WordPress-Enthusiast, Fachbuchautor, Dozent und Software-Coach aus Köln. Hier, auf meinem Blog, schreibe ich über das, was mich im beruflichen Alltag so umtreibt: InDesign, Illustrator und WordPress. Wenn Du eine Frage zu diesen Themen hast, versuche ich gerne, Dir weiterzuhelfen. Melde Dich einfach per Kommentar oder Social Media bei mir!

4 Gedanken zu „Bash-Skript zum Anlegen von Ordnern und Unterordnern mit Jahreszahlen“

  1. Lieber Karsten,
    ich habe dein Bash-Script zum Anlegen von Ordnern mit Interesse gelesen und auch gleich mal mit meiner Ordnerhierarchie ausprobiert. Leider war ich nicht so erfolgreich und habe ein paar Fragen an dich.
    Ich habe dir ein ZIP zum herunterladen bereit gestellt. Enhalten sind ein paar Screenshots meiner Ordnerhierarchie und ein paar Fragen zur Programmierung. Manche Schritte zur Ausführung des Scripts erschließen mir nicht. Hier der Link
    https://storage.luckycloud.de/f/44e13f9da06e40ce8f4f/?dl=1

    Vielen Dank und viele Grüße
    Norbert Lauterbach

    Antworten
    • Lieber Norbert,
      ich habe Deinen Kommentar erhalten und mir Deine Daten heruntergeladen. Im Moment komme ich leider nicht dazu, mir das genauer anzusehen – vllt. wird es erst Anfang kommender Woche, dass ich detaillierter auf Deine Fragen eingehe.
      Aber hier schon mal ein paar Hinweise:
      zu Frage 1: Ja, der Befehl kann vom Terminal aus aufgerufen werden. Dazu müssen die Bedingungen erfüllt sein, die ich unter dem Punkt 5 erwähnt habe: Script liegt im .bin-Ordner; Script ist ausführbar; das Verzeichnis, in dem das Script liegt, ist in der PATH-Variable hinterlegt.
      zu Frage 2: wie das Verzeichnis heißt, ist prinzipiell egal. .bin ist ein Standard, deshalb verwende ich ihn hier auch – möglicherweise gibt’s den auf Deinem Rechner sogar schon?
      zu Frage 3: Das Script machst Du ausführbar, in dem Du im Terminal auf dieses Script verweist. Also sowas wie ~/.bin $ make-directories-new-year.sh chmod +x.
      zu Frage 4: Was genau möchtest Du anders haben?
      Liebe Grüße
      Karsten

      Antworten
      • Lieber Karsten,
        vielen Dank für deine Mühe. Wenn ich einen .bin Ordner anlege heißt es „diese Ordnerbezeichnung ist für das System reserviert“. Egal, ich habe einen anderen Ordnernamen im Homeverzeichnis angelegt. Anschließend den Pfad kopiert /Users/admin_nola/ScriptOrdner $ make-directories-new-year.sh chmod +x
        und als Ergebnis permission denied: /Users/admin_nola/ScriptOrdner erhalten.
        Vielleicht habe ich auch grundsätzlich etwas im Script falsch gemacht.
        Also keine Eile, ich bin noch beim Troubleshooting.
        Vielen Dank und viele Grüße
        Norbert

        Antworten

Schreibe einen Kommentar