是否可以制作多级目录?

mis*_*yes 7 c directory

使用mkdir()(C 函数)我可以创建一个 1 级目录,如果我想创建多级目录,如:

folder/subfolder/subsubfolder
Run Code Online (Sandbox Code Playgroud)

是否可以?如果是这样,如何?

Hau*_*ing 19

mkdir --parents folder/subfolder/subsubfolder
mkdir -p folder/subfolder/subsubfolder
Run Code Online (Sandbox Code Playgroud)

  • (`mkdir -p` 是标准的。`--parents` 是 GNU,而不是 Unix。) (2认同)
  • 如果问题与 C 代码有关,为什么将其标记为答案? (2认同)

sch*_*iba 8

mkdir -p /dir1/dir2/dir3
Run Code Online (Sandbox Code Playgroud)

请查看联机帮助页了解详细信息:

man mkdir
Run Code Online (Sandbox Code Playgroud)


Cœu*_*œur 5

类似的东西:

#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);
}
Run Code Online (Sandbox Code Playgroud)

或者:

#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);
}
Run Code Online (Sandbox Code Playgroud)

第一种方法应该始终有效。第二种方法应该只在您的路径以斜杠开头时才有效,因为它将在以点开头的路径上循环。