Resumen
El comando `file` determina el tipo de un archivo analizando su contenido, sin depender de la extensión. Reconoce varios formatos como texto/binario, formatos de archivos ejecutables (ELF), archivos comprimidos, imágenes/audio, y puede también mostrar el tipo MIME y la codificación.
Características principales
- Determina el tipo por el contenido real, independientemente de la extensión
- Capaz de mostrar el tipo MIME y la codificación de caracteres
- Puede optar por determinar el destino de un enlace simbólico o el enlace en sí
- Intenta verificar el contenido dentro de archivos comprimidos (-z)
Ejemplos de escenarios de uso
Situaciones en las que el comando `file` es particularmente útil.
- Identificación del formato real de un archivo con una extensión incorrecta (ej: un PDF disfrazado de .jpg)
- Determinación del tipo de archivos sin extensión
- Ramificación del procesamiento en scripts según el tipo de archivo
- Determinación del tipo MIME de archivos subidos en servicios web/de red
- Determinación del enlace simbólico en sí o de su destino
- Análisis del contenido interno de archivos comprimidos
- Identificación del formato de archivos ejecutables en análisis de seguridad y forenses
Opciones principales
Opciones de uso frecuente agrupadas por situación.
1) Comportamiento básico y control de salida
2) Especificación de entrada/destino
3) Base de datos mágica/Exclusión/Depuración
4) Ayuda/Versión
Comando generado:
Combina los comandos.
Descripción:
`file` Ejecutando el comando.
Combina las opciones anteriores para ejecutar virtualmente los comandos junto con la IA.
Ejemplos de uso
Patrones de uso frecuente organizados en ejemplos.
Determinación básica
file /bin/ls
Muestra el tipo de archivo en formato básico
Salida concisa sin nombre de archivo
file -b /bin/ls
Salida simple fácil de procesar en scripts
Tipo MIME/Codificación
file --mime-type index.html && file --mime-encoding README.md
Útil para la determinación de tipos en web/pipelines
Verificar dentro de archivos comprimidos
file -z backup.tar.gz
Estima el contenido real de un archivo comprimido
El enlace simbólico en sí vs. el destino
file -h symlink && file -L symlink
Examina el enlace en sí (-h) o sigue el destino para examinarlo (-L)
Verificación masiva de tipos MIME con find
find . -type f -print0 | xargs -0 file --mime-type
Transfiere listas de archivos de forma segura usando el delimitador NUL
Ubicación de la base de datos mágica
La ruta puede variar según el sistema y la distribución.
🪄 DB mágica compilada predeterminada
/usr/share/file/magic.mgc
Ubicación predeterminada en la mayoría de las distribuciones
📁 Directorio de origen mágico
/usr/share/file/magic/
Reglas de origen antes de la compilación (original, no .mgc)
Códigos de salida
Consulte para el manejo de ramificaciones en scripts.
Código | Significado |
---|---|
0 | Normal: Determinación exitosa (o tarea solicitada completada) |
1 | Problema general: Archivo no existente/inaccesible/fallo de determinación, etc. |
2 | Error de uso o error del sistema |
Instalación
La mayoría viene preinstalado, pero si no, instálelo con lo siguiente.
Debian/Ubuntu
sudo apt update && sudo apt install -y file
RHEL/CentOS/Fedora
sudo dnf install -y file
Arch Linux
sudo pacman -S --needed file
openSUSE
sudo zypper install -y file
Consejos y precauciones
- Usar explícitamente `--mime-type` y `--mime-encoding` puede evitar diferencias de comportamiento de `-i/--mime` según la distribución/versión.
- Manejo de enlaces simbólicos: use `-h` para ver el enlace en sí, y `-L` para verificar el archivo de destino.
- Al procesar grandes cantidades, usar el patrón `find -print0 | xargs -0` es seguro para nombres de archivo que contienen espacios/saltos de línea.
- Según el formato de compresión, `-z` podría no siempre verificar el interior. Descomprima primero si es necesario.