mkdir --parents folder/subfolder/subsubfolder
mkdir -p folder/subfolder/subsubfolder
Usando mkdir()
(a função C) eu posso criar um diretório de 1 nível, se eu quiser criar o diretório multi_level como:
folder/subfolder/subsubfolder
é possível? se sim, como?
mkdir -p /dir1/dir2/dir3
Por favor, verifique a página do manual para mais detalhes:
man mkdir
Eu não tentei, mas algo ao longo das linhas:
#include <libgen.h>
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);
}
ou:
#include <string.h>
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);
}
A primeira maneira deve sempre funcionar. A segunda maneira só deve funcionar se o seu caminho começar com uma barra à direita, porque ele irá fazer um loop nos caminhos que começam com um ponto.
No caso de -p
não estar disponível, as listas de argumentos normalmente são analisadas na ordem em que aparecem na linha de comando, assim:
mkdir adam adam/bertil adam/bertil/caesar
é funcionalmente equivalente a
mkdir -p adam/bertil/caesar