Publi

  • Cómo listar archivos de forma recursiva en C, y un mundo de posibilidades en nuestros programas

    3042638653_f14c62a4f7_bPuede que seas un hacha con el comando find o incluso con locate; pero hay veces que nuestro software tiene que ser capaz de realizar la búsqueda de un archivo en el árbol de directorios, puede que queramos hacer inclusiones, exclusiones, o analizar las características del archivo.
    Podemos tener varias misiones, por ejemplo calcular el tamaño que ocupan todos los archivos a partir de una ruta dada (como hace du -s), copiarlos a otra ruta como haría un gestor de archivos o, incluso buscar archivos repetidos.… Leer artículo completo

  • Listar archivos dentro de un directorio o carpeta en C

    Árbol de directoriosNuestro software debe buscar archivos dentro de un directorio determinado, ya sea un archivo especial, una recopilación de datos del disco duro, una búsqueda de plugins, etc…

    Hemos elegido lenguaje C para hacer esto, porque en bash podemos llamar a ls o find y apaga y vámonos.

    Estas funciones, nos recordarán al uso de archivos con fopen() y fclose().

    Para usar esta implementación, como veremos en el ejemplo, debemos incluir <sys/types.c> y <dirent.h> y, en principio, empezaremos con un ejemplo sencillo que lista los archivos del directorio actual (una vez tenemos el nombre y la ruta del archivo podemos hacer con él lo que queramos):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    #include <stdlib.h>
    #include <stdio.h>
    #include <sys/types.h>
    #include <dirent.h>

    /* Función para devolver un error en caso de que ocurra */
    void error(const char *s);
    /* Función que hace algo con un archivo */
    void procesoArchivo(char *archivo);

    int main()
    {
      /* Con un puntero a DIR abriremos el directorio */
      DIR *dir;
      /* en *ent habrá información sobre el archivo que se está "sacando" a cada momento */
      struct dirent *ent;

      /* Empezaremos a leer en el directorio actual */
      dir = opendir (".");

      /* Miramos que no haya error */
      if (dir == NULL)
        error("No puedo abrir el directorio");
     
      /* Una vez nos aseguramos de que no hay error, ¡vamos a jugar!
    Leer artículo completo