![다중 레벨 디렉토리를 생성할 수 있습니까? [복사]](https://linux55.com/image/31667/%EB%8B%A4%EC%A4%91%20%EB%A0%88%EB%B2%A8%20%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC%EB%A5%BC%20%EC%83%9D%EC%84%B1%ED%95%A0%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
(C 함수)를 사용하여 mkdir()
다중 레벨 디렉토리를 생성하려는 경우 단일 레벨 디렉토리를 생성할 수 있습니다. 예를 들면 다음과 같습니다.
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