Ist es möglich, ein mehrstufiges Verzeichnis zu erstellen?

Ist es möglich, ein mehrstufiges Verzeichnis zu erstellen?

Mithilfe mkdir()(der C-Funktion) kann ich ein einstufiges Verzeichnis erstellen, wenn ich ein mehrstufiges Verzeichnis erstellen möchte, wie:

folder/subfolder/subsubfolder

ist das möglich? und wenn ja, wie?

Antwort1

mkdir --parents folder/subfolder/subsubfolder
mkdir -p folder/subfolder/subsubfolder

Antwort2

mkdir -p /dir1/dir2/dir3

Weitere Einzelheiten finden Sie auf der Manpage:

man mkdir

Antwort3

Etwas in der Art von:

#include <libgen.h>

// safe
void mkdir_recursive(const char *path)
{
    char *subpath, *fullpath;
    
    fullpath = strdup(path);
    subpath = dirname(fullpath);
    if (strlen(subpath) > 1)
        mkdir_recursive(subpath);
    mkdir(path);
    free(fullpath);
}

oder:

#include <string.h>

// only pass a path starting with a trailing slash
// (if path starts with a dot, it will loop and crash)
void mkdir_recursive(const char *path)
{
    char *subpath, *fullpath;
    
    fullpath = strdup(path);
    subpath = basename(fullpath);
    if (strlen(subpath) > 0)
        mkdir_recursive(subpath);
    mkdir(path);
    free(fullpath);
}

Die erste Methode sollte immer funktionieren. Die zweite Methode sollte nur funktionieren, wenn Ihr Pfad mit einem abschließenden Schrägstrich beginnt, da bei Pfaden, die mit einem Punkt beginnen, eine Schleife auftritt.

Antwort4

Falls -pnicht verfügbar ist, werden Argumentlisten normalerweise in der Reihenfolge analysiert, in der sie in der Befehlszeile erscheinen, also:

mkdir adam adam/bertil adam/bertil/caesar

ist funktional äquivalent zu

mkdir -p adam/bertil/caesar

verwandte Informationen