Используя mkdir()
(функция C), я могу создать 1-уровневый каталог, если я хочу создать каталог multi_level, например:
folder/subfolder/subsubfolder
Является ли это возможным? если да, то как?
mkdir --parents folder/subfolder/subsubfolder mkdir -p folder/subfolder/subsubfolder
mkdir -p /dir1/dir2/dir3
Для получения дополнительной информации см. Справочную страницу:
man mkdir
Я не пробовал, но что-то вроде:
#include <libgen.h> void mkdir_recursive(char *path) { char *subpath, *fullpath; fullpath = strdup(path); subpath = dirname(path); if (strlen(subpath) > 1) mkdir_recursive(subpath); mkdir(fullpath); free(fullpath); }
или:
#include <string.h> void mkdir_recursive(char *path) { char *subpath, *fullpath; fullpath = strdup(path); subpath = basename(path); if (strlen(subpath) > 0) mkdir_recursive(subpath); mkdir(fullpath); free(fullpath); }
Первый способ всегда должен работать. Второй способ должен работать только в том случае, если ваш путь начинается с завершающей косой черты, потому что он будет циклически перемещаться по путям, начиная с точки.
В случае отсутствия -p
списки аргументов обычно анализируются в том порядке, в котором они отображаются в командной строке, таким образом:
mkdir adam adam/bertil adam/bertil/caesar
функционально эквивалентно
mkdir -p adam/bertil/caesar