Sois tan brillantes como un agujero negro y el doble de denso
				
			Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes Menú 
				
#include <stdio.h>
#include <ctype.h> 
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <dirent.h>
#define NORMAL  "\x1B[0m"
#define GREEN  "\x1B[32m"
#define BLUE  "\x1B[34m"
#define RED  "\x1b[32m"
/* Función que procesa la lectura un archivo */
void procesoArchivo(char *archivo);
void mostrarFiltrado(char * path);
int main(int argc, char *argv[]){
	int opcion=0;
	char *path; //Es para la ruta
	char *type;
	//char *name;
	int size;
	int maxdepth;
	int niveles;
	unsigned num;
	
	// Con ello evitamos fallos de violacion de segmentacion. Se le asigna un espacio en memoria.
	type = (char*)malloc(1024);
	path = (char*)malloc(1024);
	name = (char*)malloc(1024);
	
	for(int i; i<argc; i++){
		if(strcmp(argv[i], "-maxdepth") == 0){ //Si la cadena que tengo en la posicion i es igual a "x"
							//Devolverá 0 en caso de ser iguales caracter a caracter
			if(i == argc-1){ //Si contador es igual al ultimo numero de parametros muestra error 
				fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
				exit(EXIT_FAILURE);
			}
			opcion=1;
			
		} else if(strcmp(argv[i], "-type") == 0){
			if(i == argc-1){
				fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
				exit(EXIT_FAILURE);
			}
			opcion=2;
			
		} else if(strcmp(argv[i], "-name") == 0){
			if(i == argc-1){ 
				fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
				exit(EXIT_FAILURE);
			}
			opcion=3;
			
		} else if(strcmp(argv[i], "-size") == 0){
			if(i == argc-1){ 
				fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
				exit(EXIT_FAILURE);
			}
			opcion=4;
		}else{
			switch(opcion){
				case 0: //Ruta 
					if(i != 1){
						fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
						exit(EXIT_FAILURE);
					}
					strcpy(path, argv[i]); 
					break;
					
				case 1: //Maxdepth
					maxdepth <- atoi(argv[i]); //Convierte una cadena a un entero
					niveles = maxdepth;
					 
					if(! niveles){ //Si niveles es vacio if(niveles != NULL)
						fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
						exit(EXIT_FAILURE);	
					}
					if(niveles < 0){ //Si niveles es menor que 0
						fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
						exit(EXIT_FAILURE);	
					} 
					
					break;
					
				case 2: //type
					//Si la cadena que haya en la posicion i es distinta a la mencionada da un error
					if(strcmp(argv[i], "d") != 0 && strcmp(argv[i], "f") != 0){ 
						fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
						exit(EXIT_FAILURE);
					}
					
					//opcion = 3; 
					strcpy(type, argv[i]);
					break;
					
				case 3: //name
				
					
					
					break;
					
				case 4: //size
					
					
					break;
			}
		}
		
	
	}
	
	/* Con un puntero a DIR abriremos el directorio */
	//Cuando solo tengo la ruta
	DIR *dir;
	
	if (argv[1] != NULL){
		
		dir = opendir (argv[1]);
		
		if (dir == NULL){
			printf("\nDirectorio ""%s"" No valido!\n\n",argv[1] );
			closedir (dir);
			return 0;
		}
		
		else {
			dir = opendir (argv[1]);
			path = argv[1];
		}
	}
	else {
		
		dir = opendir (".");
	}
	/* en *ent almacena información sobre el archivo que se esta "obteniendo" a cada momento */
	struct dirent *ent;
	
	/* Leyendo uno a uno todos los archivos que hay */
	while ((ent = readdir (dir)) != NULL)
	{
		/* Nos devolvera el directorio actual (.) y el anterior (..) */
		if ( (strcmp(ent->d_name, ".")!=0 ) && (strcmp(ent->d_name, "..")!=0 ))
		{
			/* Una vez tenemos el archivo, lo pasamos a una funcion para procesarlo. */
			procesoArchivo(ent->d_name);
		}
	}
	closedir (dir);
	
	return EXIT_SUCCESS;
	
	mostrarFiltrado(path);
}
void procesoArchivo(char *archivo)
{
	/* Para "procesar", o al menos, hacer algo con el archivo, vamos a decir su tamaño en bytes */
	/* */
	FILE *fich;
	long ftam;
	
	fich=fopen(archivo, "r");
	if (fich)
	{
		fseek(fich, 0L, SEEK_END);
		ftam=ftell(fich);
		fclose(fich);
		/* Si todo va bien, decimos el tamaño */
		printf ("%30s (%ld bytes)\n", archivo, ftam);
	}
	else
		/* Si ha pasado algo, solo decimos el nombre */
		printf ("%30s\n", archivo);
}
/* Mostrar Contenido Recursivo */
void mostrarFiltrado(char * path, char *type, int maxdepth)
{
	DIR * d = opendir(path);
	if(d==NULL) return; 
	struct dirent * dir;
	
	while ((dir = readdir(d)) != NULL) 
	{
		if(dir-> d_type != DT_DIR) 
			printf("%s%s\n",BLUE, dir->d_name);
		else
			if(dir -> d_type == DT_DIR && strcmp(dir->d_name,".")!=0 && strcmp(dir->d_name,"..")!=0 )
		{
			printf("%s\n", dir->d_name); 
			char d_path[255]; 
			printf(d_path, "%s/%s", path, dir->d_name);//imprime la ruta /mi_directorio
			mostrarFiltrado(d_path);
		}
		
	}
	
	current_path = type(dir);
	while (current_path != NULL){
		if(current_path.type == type){
			if(strcmp(argv[i], "f") == 0 || ! type ){
				printf(current_path);
			} else if(strcmp(argv[i], "d") == 0 || ! type){
				printf(current_path);
			}
		}
		if(current_path.type == dir && current_depth < maxdepth){
			mostrarFiltrado(current_path, type, maxdepth, current_depth + 1);
		}
		
		current_path = type(dir);
	}
	closedir(d);
}
#include <stdio.h>
#include <ctype.h> 
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <dirent.h>
#define NORMAL  "\x1B[0m"
#define GREEN  "\x1B[32m"
#define BLUE  "\x1B[34m"
#define RED  "\x1b[32m"
/* Función que procesa la lectura un archivo */
void procesoArchivo(char *archivo);
void mostrarFiltrado(char * path);
int main(int argc, char *argv[]){
	int opcion=0;
	char *path; //Es para la ruta
	char *type;
	char *name;
	int size;
	int maxdepth;
	int niveles;
	unsigned num;
	
	// Con ello evitamos fallos de violacion de segmentacion. Se le asigna un espacio en memoria.
	type = (char*)malloc(1024);
	path = (char*)malloc(1024);
	name = (char*)malloc(1024);
	
	for(int i; i<argc; i++){
		if(strcmp(argv[i], "-maxdepth") == 0){ //Si la cadena que tengo en la posicion i es igual a "x"
							//Devolverá 0 en caso de ser iguales caracter a caracter
			if(i == argc-1){ //Si contador es igual al ultimo numero de parametros muestra error 
				fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
				exit(EXIT_FAILURE);
			}
			opcion=1;
			
		} else if(strcmp(argv[i], "-type") == 0){
			if(i == argc-1){ //DUDA: utilizo == ?
				fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
				exit(EXIT_FAILURE);
			}
			opcion=2;
			
		} else if(strcmp(argv[i], "-name") == 0){
			if(i == argc-1){ 
				fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
				exit(EXIT_FAILURE);
			}
			opcion=3;
			
		} else if(strcmp(argv[i], "-size") == 0){
			if(i == argc-1){ 
				fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
				exit(EXIT_FAILURE);
			}
			opcion=4;
		}else{
			switch(opcion){
				case 0: //Ruta 
					if(i != 1){
						fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
						exit(EXIT_FAILURE);
					}
					strcpy(path, argv[i]); 
					break;
					
				case 1: //Maxdepth
					maxdepth <- atoi(argv[i]); //Convierte una cadena a un entero
					niveles = maxdepth;
					 
					if(! niveles){ //Si niveles es vacio if(niveles != NULL)
						fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
						exit(EXIT_FAILURE);	
					}
					if(niveles < 0){ //Si niveles es menor que 0
						fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
						exit(EXIT_FAILURE);	
					} 
					
					break;
					
				case 2: //type
					//Si la cadena que haya en la posicion i es distinta a la mencionada da un error
					if(strcmp(argv[i], "d") != 0 && strcmp(argv[i], "f") != 0){ 
						fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
						exit(EXIT_FAILURE);
					}
					
					//opcion = 3; 
					strcpy(type, argv[i]);
					break;
					
				case 3: //name
				
					
					
					break;
					
				case 4: //size
					
					
					break;
			}
		}
		
	
	}
	
	/* Con un puntero a DIR abriremos el directorio */
	//Cuando solo tengo la ruta
	DIR *dir;
	
	if (argv[1] != NULL){
		
		dir = opendir (argv[1]);
		
		if (dir == NULL){
			printf("\nDirectorio ""%s"" No valido!\n\n",argv[1] );
			closedir (dir);
			return 0;
		}
		
		else {
			dir = opendir (argv[1]);
			path = argv[1];
		}
	}
	else {
		
		dir = opendir (".");
	}
	/* en *ent almacena información sobre el archivo que se esta "obteniendo" a cada momento */
	struct dirent *ent;
	
	/* Leyendo uno a uno todos los archivos que hay */
	while ((ent = readdir (dir)) != NULL)
	{
		/* Nos devolvera el directorio actual (.) y el anterior (..) */
		if ( (strcmp(ent->d_name, ".")!=0 ) && (strcmp(ent->d_name, "..")!=0 ))
		{
			/* Una vez tenemos el archivo, lo pasamos a una funcion para procesarlo. */
			procesoArchivo(ent->d_name);
		}
	}
	closedir (dir);
	
	return EXIT_SUCCESS;
	
	mostrarFiltrado(path);
}
void procesoArchivo(char *archivo)
{
	/* Para "procesar", o al menos, hacer algo con el archivo, vamos a decir su tamaño en bytes */
	/* */
	FILE *fich;
	long ftam;
	
	fich=fopen(archivo, "r");
	if (fich)
	{
		fseek(fich, 0L, SEEK_END);
		ftam=ftell(fich);
		fclose(fich);
		/* Si todo va bien, decimos el tamaño */
		printf ("%30s (%ld bytes)\n", archivo, ftam);
	}
	else
		/* Si ha pasado algo, solo decimos el nombre */
		printf ("%30s\n", archivo);
}
/* Mostrar Contenido Recursivo */
void mostrarFiltrado(char * path)
{
	DIR * d = opendir(path);
	if(d==NULL) return; 
	struct dirent * dir;
	while ((dir = readdir(d)) != NULL) 
	{
		if(dir-> d_type != DT_DIR) 
			printf("%s%s\n",BLUE, dir->d_name);
		else
			if(dir -> d_type == DT_DIR && strcmp(dir->d_name,".")!=0 && strcmp(dir->d_name,"..")!=0 )
		{
			printf("%s%s\n",GREEN, dir->d_name); 
			char d_path[255]; 
			sprintf(d_path, "%s/%s", path, dir->d_name);//imprime la ruta /mi_directorio
			mostrarFiltrado(d_path);
		}
		
	}
	closedir(d);
} 
allipson@allipson-Ubuntu:~/Escritorio/practicas_SOP$ ./myfind2.o . -type d
                      myfind.o (16816 bytes)
                      myfind.c (0 bytes)
               .ejemplo_41.swp (1024 bytes)
                     myfind2.c (4827 bytes)
                      fich_new (9223372036854775807 bytes)
ProyectoP1Allipson(9223372036854775807 bytes)
                       Nuevo.c (628 bytes)
                         Nuevo (634 bytes)
ProyectoP1Allipson.zip (29409 bytes)
                     Nuevo_dir (9223372036854775807 bytes)
                      funciona (9223372036854775807 bytes)
                     myfind2.o (16856 bytes)
allipson@allipson-Ubuntu:~/Escritorio/practicas_SOP$ ./myfind2.o . -maxdepth 2
                      myfind.o (16816 bytes)
                      myfind.c (0 bytes)
               .ejemplo_41.swp (1024 bytes)
                     myfind2.c (4827 bytes)
                      fich_new (9223372036854775807 bytes)
ProyectoP1Allipson.zip (9223372036854775807 bytes)
                       Nuevo.c (628 bytes)
                         Nuevo (634 bytes)
ProyectoP1Allipson.zip (29409 bytes)
                     Nuevo_dir (9223372036854775807 bytes)
                      funciona (9223372036854775807 bytes)
                     myfind2.o (16856 bytes) 
#include <stdio.h>
#include <ctype.h> 
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <dirent.h>
#define NORMAL  "\x1B[0m"
#define GREEN  "\x1B[32m"
#define BLUE  "\x1B[34m"
#define RED  "\x1b[32m"
/* Función que procesa la lectura un archivo */
void procesoArchivo(char *archivo);
void mostrarFiltrado(char * path);
int main(char *argv[], int argc){
	int opcion=0;
	char *path; //Es para la ruta
	char *type;
	char *name;
	int size;
	int maxdepth;
	int niveles;
	unsigned num;
	
	// Con ello evitamos fallos de violacion de segmentacion. Se le asigna un espacio en memoria.
	type = (char*)malloc(1024);
	path = (char*)malloc(1024);
	name = (char*)malloc(1024);
	
	for(int i; i<argc; i++){
		if(strcmp(argv[i], "-maxdepth") == 0){ //Si la cadena que tengo en la posicion i es igual a " "
							//Devolverá 0 en caso de ser iguales caracter a caracter
			//if( ){ //Si contador es igual al ultimo numero de parametros muestra error 
			//	fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
			//	exit(EXIT_FAILURE);
			//}
			opcion=1;
			
		} else if(strcmp(argv[i], "-type") == 0){
			if( i == argc){ 
				fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
				exit(EXIT_FAILURE);
			}
			opcion=2;
			
		} else if(strcmp(argv[i], "-name") == 0){
			if( i == argc){ 
				fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
				exit(EXIT_FAILURE);
			}
			opcion=3;
			
		} else if(strcmp(argv[i], "-size") == 0){
			if( i == argc){ 
				fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
				exit(EXIT_FAILURE);
			}
			opcion=4;
		}else{
			switch(opcion){
				case 0: //Ruta 
					if(i != 1){  ///DUDA si va i o argv[i]
						fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
						exit(EXIT_FAILURE);
					}
					path=argv[i]; 
					break;
					
				case 1: //Maxdepth
					maxdepth <- atoi(argv[i]); //Convierte una cadena a un entero
					niveles = maxdepth;
					 
					if(! niveles){ //Si niveles es vacio if(niveles != NULL)
						fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
						exit(EXIT_FAILURE);	
					}
					if(niveles < 0){ //Si niveles es menor que 0
						fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
						exit(EXIT_FAILURE);	
					} 
					
					break;
					
				case 2: //type
					//Si la cadena que haya en la posicion i es distinta a la mencionada da un error
					if(strcmp(argv[i], "d") != 0){ 
						fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
						exit(EXIT_FAILURE);
					}
					if(strcmp(argv[i], "f") != 0){ 
						fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
						exit(EXIT_FAILURE);
					}
					//opcion = 3; 
					type=argv[i];
					break;
					
				case 3: //name
				
					
					name=argv[i];
					break;
					
				case 4: //size
					
					
					break;
			}
		}
		
	
	}
	
	/* Con un puntero a DIR abriremos el directorio */
	//Cuando solo tengo la ruta
	DIR *dir;
	
	if (argv[1] != NULL){
		
		dir = opendir (argv[1]);
		
		if (dir == NULL){
			printf("\nDirectorio ""%s"" No valido!\n\n",argv[1] );
			closedir (dir);
			return 0;
		}
		
		else {
			dir = opendir (argv[1]);
			path = argv[1];
		}
	}
	else {
		
		dir = opendir (".");
	}
	/* en *ent almacena información sobre el archivo que se esta "obteniendo" a cada momento */
	struct dirent *ent;
	
	/* Leyendo uno a uno todos los archivos que hay */
	while ((ent = readdir (dir)) != NULL)
	{
		/* Nos devolvera el directorio actual (.) y el anterior (..) */
		if ( (strcmp(ent->d_name, ".")!=0 ) && (strcmp(ent->d_name, "..")!=0 ))
		{
			/* Una vez tenemos el archivo, lo pasamos a una funcion para procesarlo. */
			procesoArchivo(ent->d_name);
		}
	}
	closedir (dir);
	
	return EXIT_SUCCESS;
	
	mostrarFiltrado(path);
}
void procesoArchivo(char *archivo)
{
	/* Para "procesar", o al menos, hacer algo con el archivo, vamos a decir su tamaño en bytes */
	/* */
	FILE *fich;
	long ftam;
	
	fich=fopen(archivo, "r");
	if (fich)
	{
		fseek(fich, 0L, SEEK_END);
		ftam=ftell(fich);
		fclose(fich);
		/* Si todo va bien, decimos el tamaño */
		printf ("%30s (%ld bytes)\n", archivo, ftam);
	}
	else
		/* Si ha pasado algo, solo decimos el nombre */
		printf ("%30s\n", archivo);
}
/* Mostrar Contenido Recursivo */
void mostrarFiltrado(char * path)
{
	DIR * d = opendir(path);
	if(d==NULL) return; 
	struct dirent * dir;
	while ((dir = readdir(d)) != NULL) 
	{
		if(dir-> d_type != DT_DIR) 
			printf("%s%s\n",BLUE, dir->d_name);
		else
			if(dir -> d_type == DT_DIR && strcmp(dir->d_name,".")!=0 && strcmp(dir->d_name,"..")!=0 )
		{
			printf("%s%s\n",GREEN, dir->d_name); 
			char d_path[255]; 
			sprintf(d_path, "%s/%s", path, dir->d_name);//imprime la ruta /mi_directorio
			mostrarFiltrado(d_path);
		}
		
	}
	closedir(d);
}
 
#include <stdio.h>
#include <ctype.h> 
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <dirent.h>
#define NORMAL  "\x1B[0m"
#define GREEN  "\x1B[32m"
#define BLUE  "\x1B[34m"
#define RED  "\x1b[32m"
/* Función que procesa la lectura un archivo */
void procesoArchivo(char *archivo);
void mostrarContenido(char * path);
int main(char **argv, int argc){
	int opcion=0;
	char *path; //Es para la ruta
	char *type;
	char *name;
	int size;
	int maxdepth;
	int niveles;
	unsigned num;
	
	// Con ello evitamos fallos de violacion de segmentacion. Se le asigna un espacio en memoria.
	type = malloc(1024);
	path = malloc(1024);
	name = malloc(1024);
	
	for(int i; i<argc; i++){
		if(strcmp(argv[i], "-maxdepth") == 0){ //Si la cadena que tengo en la posicion i es igual a " "
							//Devolverá 0 en caso de ser iguales caracter a caracter
			if( i == argc){ //Si contador es igual al ultimo numero de parametros muestra error 
				fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
				exit(EXIT_FAILURE);
			}
			opcion=1;
			
		} else if(strcmp(argv[i], "-type") == 0){
			if( i == argc){ 
				fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
				exit(EXIT_FAILURE);
			}
			opcion=2;
			
		} else if(strcmp(argv[i], "-name") == 0){
			if( i == argc){ 
				fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
				exit(EXIT_FAILURE);
			}
			opcion=3;
			
		} else if(strcmp(argv[i], "-size") == 0){
			if( i == argc){ 
				fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
				exit(EXIT_FAILURE);
			}
			opcion=4;
		}else{
			switch(opcion){
				case 0: //Ruta 
					if(i != 1){  ///DUDA si va i o argv[i]
						fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
						exit(EXIT_FAILURE);
					}
					path=argv[i]; 
					break;
					
				case 1: //Maxdepth
					maxdepth <- atoi(argv[i]); //Convierte una cadena a un entero
					niveles = maxdepth;
					 
					if(! niveles){ //Si niveles es vacio if(niveles != NULL)
						fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
						exit(EXIT_FAILURE);	
					}
					if(niveles < 0){ //Si niveles es menor que 0
						fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
						exit(EXIT_FAILURE);	
					} 
					
					break;
					
				case 2: //type
					//Si la cadena que haya en la posicion i es distinta a la mencionada da un error
					if(strcmp(argv[i], "d") != 0){ 
						fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
						exit(EXIT_FAILURE);
					}
					if(strcmp(argv[i], "f") != 0){ 
						fprintf(stderr, "Error. Modo de empleo: mifind [camino] [opciones]\n");
						exit(EXIT_FAILURE);
					}
					//opcion = 3; 
					type=argv[i];
					break;
					
				case 3: //name
				
					
					name=argv[i];
					break;
					
				case 4: //size
					
					
					break;
			}
		}
		
	
	}
	
	/* Con un puntero a DIR abriremos el directorio */
	//Cuando solo tengo la ruta
	DIR *dir;
	
	if (argv[1] != NULL){
		
		dir = opendir (argv[1]);
		
		if (dir == NULL){
			printf("\nDirectorio ""%s"" No valido!\n\n",argv[1] );
			closedir (dir);
			return 0;
		}
		
		else {
			dir = opendir (argv[1]);
			path = argv[1];
		}
	}
	else {
		
		dir = opendir (".");
	}
	/* en *ent almacena información sobre el archivo que se esta "obteniendo" a cada momento */
	struct dirent *ent;
	
	/* Leyendo uno a uno todos los archivos que hay */
	while ((ent = readdir (dir)) != NULL)
	{
		/* Nos devolvera el directorio actual (.) y el anterior (..) */
		if ( (strcmp(ent->d_name, ".")!=0 ) && (strcmp(ent->d_name, "..")!=0 ))
		{
			/* Una vez tenemos el archivo, lo pasamos a una funcion para procesarlo. */
			procesoArchivo(ent->d_name);
		}
	}
	closedir (dir);
	
	return EXIT_SUCCESS;
	
	//mostrarFiltrado(path, name, type, size, maxdepth);
	mostrarFiltrado(path);
}
void procesoArchivo(char *archivo)
{
	/* Para "procesar", o al menos, hacer algo con el archivo, vamos a decir su tamaño en bytes */
	/* */
	FILE *fich;
	long ftam;
	
	fich=fopen(archivo, "r");
	if (fich)
	{
		fseek(fich, 0L, SEEK_END);
		ftam=ftell(fich);
		fclose(fich);
		/* Si todo va bien, decimos el tamaño */
		printf ("%30s (%ld bytes)\n", archivo, ftam);
	}
	else
		/* Si ha pasado algo, solo decimos el nombre */
		printf ("%30s\n", archivo);
}
//void mostrarFiltrado(char *path, char *name, char *type, int size, int maxdepth){
//}
/* Mostrar Contenido Recursivo */
void mostrarFiltrado(char * path)
{
	DIR * d = opendir(path);
	if(d==NULL) return; 
	struct dirent * dir;
	while ((dir = readdir(d)) != NULL) 
	{
		if(dir-> d_type != DT_DIR) 
			printf("%s%s\n",BLUE, dir->d_name);
		else
			if(dir -> d_type == DT_DIR && strcmp(dir->d_name,".")!=0 && strcmp(dir->d_name,"..")!=0 )
		{
			printf("%s%s\n",GREEN, dir->d_name); 
			char d_path[255]; 
			sprintf(d_path, "%s/%s", path, dir->d_name);
			mostrarFiltrado(d_path);
		}
		//if(strcmp(argv[2], "-type") == 0){
		//	Funcion_type(dir, type);
		//}
	}
	closedir(d);
}