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:
-
Filesystem test
Usa metadatos del sistema de archivos (similar a stat) para determinar si el archivo está vacío o su tipo básico.
-
Magic test
Consulta la base de datos de firmas binarias (magic numbers) para identificar formatos conocidos como ELF, JPEG, ZIP, etc.
-
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.






