Можно ли сделать многоуровневый каталог?

Можно ли сделать многоуровневый каталог?

Используя mkdir()(функцию C), я могу создать одноуровневый каталог, если я хочу создать многоуровневый каталог, например:

folder/subfolder/subsubfolder

возможно ли это? если да, то как?

решение1

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

решение2

mkdir -p /dir1/dir2/dir3

Подробности смотрите на странице руководства:

man mkdir

решение3

Что-то вроде этого:

#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);
}

или:

#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);
}

Первый способ должен работать всегда. Второй способ должен работать только если ваш путь начинается с завершающего слеша, потому что он будет зацикливаться на путях, начинающихся с точки.

решение4

В случае -pотсутствия аргументов списки аргументов обычно анализируются в том порядке, в котором они указаны в командной строке, например:

mkdir adam adam/bertil adam/bertil/caesar

функционально эквивалентно

mkdir -p adam/bertil/caesar

Связанный контент