Comando file en Linux: guía práctica para identificar tipos de archivos y MIME con precisión

Published:

En Linux, identificar el tipo real de un archivo sin depender de su extensión es fundamental en administración de sistemas, DevOps y seguridad. El comando file permite determinar el tipo de archivo, su codificación MIME e incluso inspeccionar archivos comprimidos y dispositivos especiales.

Esta guía está optimizada para uso práctico en entornos productivos.


¿Cómo funciona internamente el comando file?

El comando analiza archivos utilizando tres tipos de pruebas:

  1. Filesystem test

    Usa metadatos del sistema de archivos (similar a stat) para determinar si el archivo está vacío o su tipo básico.

  2. Magic test

    Consulta la base de datos de firmas binarias (magic numbers) para identificar formatos conocidos como ELF, JPEG, ZIP, etc.

  3. Language test

    Busca patrones de texto que permitan identificar scripts o archivos de código fuente.

Esto permite detectar archivos aunque tengan extensión incorrecta o no tengan ninguna.


Sintaxis básica

file [OPCIÓN] archivo

Identificar el tipo de un archivo

file archivo.txt

Ejemplo de salida:

archivo.txt: ASCII text

Funciona incluso si el archivo no tiene extensión.


Mostrar solo el tipo (sin nombre del archivo)

file -b archivo.txt

Salida:

ASCII text

Ideal para automatización y scripting.


Analizar múltiples archivos

file archivo.txt archivo.zip imagen.jpg

Analizar todos los archivos del directorio actual

file *

Analizar archivos en otro directorio

file Documents/*

Filtrar por rango de nombres

file [a-z]*

Eliminar padding para alinear salida

file -N [a-z]*

Muy útil si luego vas a procesar la salida con awk o grep.


Inspeccionar archivos comprimidos

file -z archivo.zip

file -z archivo.tar.xz

Permite analizar el contenido sin descomprimir manualmente.


Analizar dispositivos especiales

sudo file -s /dev/sda

file -s /dev/null

Sirve para identificar sistemas de archivos como ext4, xfs o firmas LVM en discos.


Obtener el tipo MIME

file -i archivo.tar.xz

file -i archivo.txt

file -i imagen.jpg

Ejemplo de salida:

imagen.jpg: image/jpeg; charset=binary

Mostrar solo el MIME sin charset

file –mime-type archivo.jpg

Salida:

archivo.jpg: image/jpeg

Muy útil en validaciones backend y APIs.


Casos prácticos avanzados

Buscar binarios ELF en el sistema

find /usr/bin -type f -exec file {} ; | grep ELF

Ideal para auditorías o inventarios rápidos.


Detectar archivos maliciosos disfrazados

file factura.pdf

Si devuelve algo como:

factura.pdf: PE32 executable

Es un ejecutable renombrado.


Detectar scripts sin extensión

file deploy

Salida posible:

deploy: Bourne-Again shell script

Muy común en repositorios DevOps.


Usar una base de datos magic personalizada

file -m custom.magic archivo.bin

Permite definir reglas para formatos propietarios.


Ubicación de la base magic

Generalmente:

/usr/share/misc/magic

O en sistemas modernos:

/usr/share/file/magic.mgc

Conclusión

El comando file es una herramienta esencial para administración Linux, análisis forense y validación de archivos en pipelines CI/CD. Permite detectar el tipo real de un archivo sin depender de su extensión, inspeccionar dispositivos y validar contenido comprimido de forma rápida y eficiente.

Dominarlo reduce riesgos de seguridad y mejora la capacidad de troubleshooting en entornos productivos.

- Advertisement -
Jorge
Jorgehttps://nksistemas.com
Soy Jorge, Sr Sysadmin Linux/DevOps/SRE y creador de NKSistemas.com Trabajo con plataformas: Linux, Windows, AWS, GCP, VMware, Helm, kubernetes, Docker, etc.

Related articles