是否可以建立多级目录?

是否可以建立多级目录?

使用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

相关内容