다중 레벨 디렉토리를 만드는 것이 가능합니까?

다중 레벨 디렉토리를 만드는 것이 가능합니까?

(C 함수)를 사용하여 mkdir()다음과 같은 다중 레벨 디렉토리를 생성하려면 1레벨 디렉토리를 생성할 수 있습니다.

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

관련 정보