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