La mayoría de la gente mira la extensión de un archivo y luego adivina el tipo de archivo de esa extensión. Por ejemplo, cuando ve un archivo con una extensión de gif, jpg, bmp o png, piensa en un archivo de imagen, y cuando ve un archivo con una extensión de zip, asume que el archivo ha sido comprimido usando una utilidad de compresión zip.
En realidad, un archivo puede tener una extensión pero ser algo completamente diferente. Además, si un archivo no tiene extensión, ¿cómo se puede determinar el tipo de archivo?
En Linux, puede encontrar el tipo de archivo verdadero usando el comando file .
Índice de contenidos
Cómo funciona el comando Archivo
El comando file ejecuta tres conjuntos de pruebas contra un archivo:
- pruebas del sistema de archivos
- pruebas de magia
- pruebas de idioma
El primer conjunto de pruebas que devuelve una respuesta válida hace que se imprima el tipo de archivo.
Las pruebas del sistema de archivos examinan el retorno de una llamada del sistema stat. El programa comprueba si el archivo está vacío y si es un archivo especial. Si el tipo de fichero se encuentra en el fichero de cabecera del sistema, se devuelve como el tipo de fichero válido.
Las pruebas mágicas comprueban el contenido de un archivo y específicamente unos pocos bytes al principio que ayudan a determinar el tipo de archivo. Se utilizan varios archivos para ayudar a emparejar un archivo con su tipo de archivo, y estos se almacenan en /etc/magic, /usr/share/misc/magic.mgc, /usr /share/misc/magic. Puede anular estos archivos colocando un archivo en su carpeta de inicio llamado $HOME/.magic.mgc o $HOME/.magic.
Las pruebas finales son pruebas de idiomas. El archivo se comprueba para ver si es un archivo de texto. Al probar los primeros bytes de un archivo, la prueba puede deducir si el archivo es un formato ASCII, UTF-8, UTF-16 u otro formato que identifique al archivo como un archivo de texto. Cuando se deduce el juego de caracteres, el archivo se prueba contra diferentes idiomas.
Si ninguna de las pruebas funciona, la salida es de datos.
Cómo usar el comando Archivo
El comando de archivo se puede utilizar de la siguiente manera:
archivo nombre de fichero
Por ejemplo, imagina que tienes un archivo llamado file1, y ejecutas el siguiente comando:
archivo1
> archivo
El resultado es algo así:
archivo1: datos de imagen PNG, 640 x 341, RGB de 8 bits/color, no entrelazados
La salida determina que el archivo1 es un archivo de imagen o, para ser más exactos, un archivo gráfico de red portátil (PNG).
Diferentes tipos de archivos producen diferentes resultados:
- Tipo de archivo ODS : Hoja de cálculo de OpenDocument
- Tipo de archivo PDF : Documento PDF, versión 1.4
- Tipo de archivo CSV : Texto ASCII, con líneas muy largas, con indicadores de línea CRLF
Personalizar la salida del comando Archivo
De forma predeterminada, el comando archivo proporciona el nombre del archivo y todos los detalles sobre el archivo. Si sólo desea que se repitan los detalles sin que se repita el nombre del fichero, utilice el siguiente conmutador:
file -b file1
El resultado es algo así:
Datos de imagen PNG, 640 x 341, RGB de 8 bits/color, no entrelazados
También puede cambiar el delimitador entre el nombre de archivo y el tipo.
Por defecto, el delimitador es un dos puntos, pero puede cambiarlo por cualquier cosa que desee, como el símbolo de la tubería, como se indica a continuación:
file -F ''|' file1
El resultado es algo así:
file1| Datos de imagen PNG, 640 x 341, 8-bit/color RGB, no entrelazados
Manejo de varios archivos
Por defecto, se utiliza el comando file contra un único fichero. Sin embargo, puede especificar un nombre de archivo que contenga una lista de archivos para ser procesados por el comando de archivo.
Como ejemplo, abra un archivo llamado testfiles usando el editor nano y añada estas líneas a él:
- /etc/passwd
- /etc/pam.conf
- /etc/opt
Guarde el archivo y ejecute el siguiente comando de archivo:
file -f testfiles
La salida será algo así:
- /etc/passwd: Texto ASCII
- /etc/pam.conf: Texto ASCII
- /etc/opt: directorio
Archivos comprimidos
Por defecto, cuando ejecuta el comando file contra un archivo comprimido, verá una salida como ésta:
archivo.zip: Datos de archivo ZIP, al menos V2.0 para extraer
Aunque esto le indica que el fichero es un fichero de archivo, no conoce el contenido del fichero. Puede mirar dentro del archivo zip para ver los tipos de archivo de los archivos dentro del archivo comprimido.
El siguiente comando ejecuta el comando de archivo contra los archivos dentro de un archivo ZIP:
file -z filename
La salida muestra ahora los tipos de archivos en el archivo comprimido.
La mayoría de la gente usa el comando de archivo para encontrar el tipo de archivo básico. Para saber más sobre las posibilidades que ofrece el comando file, escriba lo siguiente en la ventana terminal:
man file
Esto abre la documentación de software de Linux incluida en el sistema.