2866 Stimmen

Wie mkdir nur, wenn ein Verzeichnis nicht bereits vorhanden ist?

Ich schreibe ein Shell-Skript, das unter der KornShell (ksh) auf AIX läuft. Ich würde gerne die mkdir um ein Verzeichnis zu erstellen. Aber das Verzeichnis könnte bereits existieren, und in diesem Fall möchte ich nichts tun. Ich möchte also entweder prüfen, ob das Verzeichnis nicht existiert, oder den Fehler "Datei existiert" unterdrücken, der mkdir auslöst, wenn es versucht, ein bestehendes Verzeichnis zu erstellen.

Wie kann ich dies am besten tun?

48voto

Atul Ranjan Punkte 327

mkdir foo funktioniert auch, wenn das Verzeichnis existiert. Damit es nur funktioniert, wenn das Verzeichnis mit dem Namen "foo" nicht existiert, versuchen Sie es mit der Option -p Flagge.

Ejemplo:

mkdir -p foo

Dadurch wird das Verzeichnis "foo" nur erstellt, wenn es noch nicht existiert :)

34voto

AbhinavVaidya8 Punkte 382

Sie können entweder eine if Anweisung, um zu prüfen, ob das Verzeichnis existiert oder nicht. Wenn dies nicht der Fall ist, wird das Verzeichnis erstellt.

  1. dir=/home/dir_name

    if [ ! -d $dir ]
    then
         mkdir $dir
    else
         echo "Directory exists"
    fi
  2. Sie können mkdir mit der Option -p verwenden, um ein Verzeichnis zu erstellen. Wenn das Verzeichnis nicht verfügbar ist, wird es überprüft.

    mkdir -p $dir

    mkdir -p ermöglicht es auch, die Baumstruktur des Verzeichnisses zu erstellen. Wenn Sie die Eltern- und Kindverzeichnisse mit demselben Befehl erstellen möchten, können Sie mkdir -p wählen

    mkdir -p /home/parent_dir /home/parent_dir/child1 /home/parent_dir/child2

28voto

moodboom Punkte 5412

Einfach, leise und tödlich:

mkdir -p /my/new/dir >/dev/null 2>&1

27voto

paxdiablo Punkte 809679

Das altbewährte und bewährte

mkdir /tmp/qq >/dev/null 2>&1

wird das tun, was Sie wollen, ohne dass viele der anderen Lösungen mit Rennbedingungen verbunden sind.

Manchmal sind die einfachsten (und hässlichsten) Lösungen die besten.

18voto

Karanvir Kang Punkte 2029

Mkdir unterstützt den Schalter -p auf Windows 8+ Systemen nicht mehr.

Sie können dies verwenden:

IF NOT EXIST dir_name MKDIR dir_name

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X