Puede 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
- Estás aquí :
- Poesía Binaria
- /Posts con la etiqueta [ stat ]
Cómo listar archivos de forma recursiva en C, y un mundo de posibilidades en nuestros programas
Listar archivos dentro de un directorio o carpeta en C
Nuestro 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):
… Leer artículo completo1
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!
Newsletter
Apúntate a mi newsletter y recibirás novedades y contenidos interesantes en tu correo. (Selecciona abajo lo que más te interese)Últimas entradas
- Crear múltiples direcciones de correo desde el CLI de Plesk
- Limitar el uso de CPU de nuestras aplicaciones o procesos en GNU/Linux (señales, nice, cpulimit/cputool, cgroups, systemd slices)
- Reanudando la marcha después de un año
- Notifica, logea y enriquece tu experiencia de trabajo en Bash con este script
- Cómo utilizar PHP desde contenedores docker tanto de forma local como en producción
Invítame a un café
Si te ha gustado el sitio, te ha resultado útil o simplemente quieres colaborar con el sitio para que siga compartiendo contenidos, invítame a un café, una pizza, una ensalada, o lo que se te ocurra.Te lo agradeceré eternamente :)Enlaces
Categorías
- #tuentiContest (26)
- algoritmos (24)
- Amazon (5)
- Android (3)
- APIs y servicios (8)
- Arduino (21)
- Bash (96)
- BITes (13)
- Bromas (2)
- C/C++ (186)
- C++11 (17)
- Casos prácticos (13)
- Clases particulares (14)
- Colaboraciones (1)
- Comunicación (50)
- Concurrencia (10)
- Cosas que damos por hechas (20)
- CSS (2)
- curioso (30)
- Debian/Ubuntu/Linux Mint/… (14)
- Descarga disponible (7)
- Docker (3)
- Emacs (18)
- Estadísticas (5)
- Eventos (1)
- Expresiones regulares (2)
- facebook (21)
- Foto (2)
- Friki (3)
- General (358)
- Github (8)
- Glib (5)
- GNUPlot (1)
- Gtk (10)
- Hardware (7)
- herramientas (17)
- HTML (6)
- Humor/Tonterías (5)
- Imagen Digital (34)
- Internet Of Things (3)
- Interneteando (58)
- Java (7)
- Javascript (7)
- Juegos (2)
- kde (5)
- Linux (199)
- Linux On Movies/TV (12)
- Lisp (3)
- Matlab (1)
- MySQL (25)
- Offtopic (3)
- PHP (106)
- Magento (7)
- Píldoras (4)
- Política (2)
- python (10)
- Seguridad (43)
- Servidores (80)
- Software Privativo (13)
- SQLite (2)
- svn (1)
- Tiempo (4)
- traducciones (6)
- twitter (4)
- Vídeo digital (14)
- Vintage (1)
- Web (32)
- Wordpress (13)
- xml (3)
Archivos
Licencia

Poesía Binaria by Gaspar Fernández is licensed under a Creative Commons Reconocimiento 4.0 Internacional License.
Creado a partir de la obra en https://poesiabinaria.net.
Últimos comentarios