Programar el comando ls -l en C
Hola,
En el marco de un proyecto, me gustaría mostrar los diferentes tipos de archivos en un directorio (ejecutable, texto, etc...).
Puedo mostrar los archivos con "opendir" pero no dejo de buscar y no encuentro nada sobre cómo mostrar los tipos de archivos... Si alguien tiene una idea que proponer, gracias de antemano.
En el marco de un proyecto, me gustaría mostrar los diferentes tipos de archivos en un directorio (ejecutable, texto, etc...).
Puedo mostrar los archivos con "opendir" pero no dejo de buscar y no encuentro nada sobre cómo mostrar los tipos de archivos... Si alguien tiene una idea que proponer, gracias de antemano.
4 respuestas
-
ModeradorUn archivo regular es muy diferente de un enlace simbólico, de un tubo nombrado o de una entrada de dispositivo (carácter, bloque).
<ital>struct dirent {
ino_t d_ino; /* número de inodo */
off_t d_off; /* no es un desplazamiento; ver NOTAS */
unsigned short d_reclen; /* longitud de este registro */
unsigned char d_type; /* tipo de archivo; no es soportado
por todos los tipos de sistemas de archivos */
char d_name[256]; /* nombre de archivo */
}</itall>
La entrada d_type contiene el tipo de entrada.
Verman 3 readdir
Para determinar los tipos de archivos, consulta libmagic
--
Gates te dio ^W te vendió las ventanas.
GNU nos dio toda la casa. (Alexandrino) -
ModeradorHola,
El "tipo de un archivo" no existe. Todos los archivos son una serie de bytes, no hay diferencia.
Según el sistema operativo, puedes tener nociones de extensiones o derechos de ejecución que te permiten añadir información adicional. Pero nada que se pueda generalizar.
--
La confianza no excluye el control. -
En ese caso, ¿cómo hacer para mostrar las extensiones?
-
ModeradorLa extensión del archivo está en su nombre.
En sí, un archivo no tiene extensión, es solo el final de su nombre lo que introduce esta noción, pero es solo una indicación, no tiene ningún valor, podemos renombrar un archivo de imagen como .exe y eso no lo convierte en un archivo ejecutable.
-
-
ColaboradorLas extensiones solo tienen sentido en Windows.
Si hablas de "ls -l", probablemente estés en GNU/Linux. Así que olvida esta historia de extensión.
ls -l no muestra el tipo de archivo. Solo indicará si se trata de un directorio o no... Sin embargo, también mostrará los permisos del archivo (lectura, escritura, etc.).
¿Es realmente ls -l lo que deseas reproducir?
--
Google es tu amigo