É possível criar um diretório multi-nível? [duplicado]

6

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?

    
por misteryes 05.05.2013 / 23:41

4 respostas

19
mkdir --parents folder/subfolder/subsubfolder
mkdir -p folder/subfolder/subsubfolder
    
por 05.05.2013 / 23:47
8
mkdir -p /dir1/dir2/dir3

Por favor, verifique a página do manual para mais detalhes:

man mkdir
    
por 05.05.2013 / 23:47
2

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.

    
por 06.05.2013 / 11:58
0

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
    
por 06.05.2013 / 13:03

Tags