Comando file de Linux: cómo utilizarlo para determinar el tipo de un archivo
En los sistemas similares a UNIX, los nombres de los archivos pueden ser completamente diferentes de sus tipos reales. En algunos casos, ni siquiera tienen extensiones válidas. Por lo tanto, esto puede complicar la gestión de los datos.
Para organizar la información rápidamente, Linux proporciona un programa llamado comando de archivo. Se utiliza principalmente para determinar el tipo de archivo, ya sea texto ASCII (Código Estándar Americano para el Intercambio de Información) o formato MIME (Extensiones Multiuso de Correo Electrónico).
En este tutorial, aprenderás los conceptos básicos del uso del programa y cómo puede mejorar tus habilidades de gestión de servidores y de funcionamiento de Linux.

Tabla de Contenidos
Sintaxis del comando file de Linux
Para utilizar el comando file de Linux en un alojamiento VPS, tendrás que conectarlo con un cliente SSH como PuTTY o Terminal.
En primer lugar, analicemos la sintaxis básica del comando file:
file [opciones] [nombre de archivo]
- file: indica al shell que ejecute el comando file.
- [opciones]: modifica el funcionamiento del comando.
- [nombre de archivo]: inserta el nombre del archivo que desea inspeccionar.
Cuando se ejecuta, el comando no tiene en cuenta la extensión del archivo. En su lugar, realiza tres pruebas para determinar el tipo de archivo:
- Prueba del sistema de archivos: examina el resultado de la llamada al sistema stat. El programa comprueba si se trata de un archivo vacío o de un tipo de archivo especial. También busca formatos conocidos relevantes para el sistema en el que se trabaja, si están especificados en el archivo de encabezado del sistema.
- Prueba mágica: utiliza “números mágicos”, una breve cadena de números al principio de un archivo, para comprobar si se trata de datos ejecutables binarios. La información necesaria para ejecutar esta prueba está disponible en /etc/magic o /usr/share/misc/magic desde un archivo mágico compilado.
- Prueba de idioma: examina los conjuntos de caracteres en los que está escrito el archivo, como texto ASCII o UTF-8. Busca cualquier secuencia especial que aparezca en las primeras líneas. Esta prueba es menos precisa, por lo que se realiza en último lugar.
La salida del comando muestra el tipo de archivo utilizando el formato estándar. Dependiendo de la opción del comando, puede proporcionar otra información, como los datos almacenados en archivos comprimidos, el tamaño o la versión.
La opción en la sintaxis te permite añadir variables al comando de archivo de Linux. A continuación se muestran algunos ejemplos comunes:
- -b o –brief: obtiene una breve descripción del tipo de archivo.
- file *: muestra todos los tipos de archivo del directorio de trabajo actual.
- -i o –mime: muestra el tipo de archivo MIME.
- -s o –special-files: lee archivos especiales.
- -z o –uncompress: comprueba y muestra la información contenida en los archivos comprimidos.
- -c o –checking-printout: comprueba la versión analizada de un archivo mágico.
- -m o –magic-file: utiliza un archivo mágico alternativo proporcionado por el usuario.
- -d: muestra información de depuración interna utilizando el formato estándar.
- <rango regex>: recupera tipos de archivos en rangos específicos.
- -0 o –print0: imprime un carácter nulo al final del nombre del archivo.
- –help: muestra el mensaje de ayuda del comando file. También enumera las opciones aceptables y su uso.
Antes de hablar de cada opción por separado, utiliza el editor nano para crear un texto de ejemplo llamado test.txt:
nano test.txt
Una vez que la línea de comandos abra un nuevo archivo, escribe unas pocas líneas de texto y pulsa Ctrl + X e Y para salir y guardar los cambios.

Ejemplos de comandos file de Linux
En las siguientes secciones, analizaremos cómo utilizar cada una de las opciones enumeradas anteriormente.
Utilizar el comando file para comprobar el tipo de archivo
En Linux, aunque los usuarios pueden cambiar el nombre de sus archivos, es posible que la información actualizada no represente los datos reales. Para encontrar el tipo correcto de un archivo, introduce:
file nombre_archivo
Por ejemplo, renombra test.txt como text.zip. Para revelar el tipo de archivo válido, escribe:
file text.zip
El resultado mostrará el nombre y su tipo real, un archivo de texto ASCII:

Para ver el formato en modo breve, utiliza la opción -b en Terminal, seguida del nombre del archivo. Por ejemplo:
file -b texto.zip
El resultado mostrará el tipo de archivo sin su nombre:

Utilizar file para enumerar el tipo de archivo de varios archivos
El comando file puede enumerar cada tipo de archivo en el directorio de inicio. Para ello, introduce file y añade un carácter comodín (*):
file *
El programa mostrará todos los archivos y directorios:

Además, el comando file puede mostrar cada tipo de archivo dentro de un directorio específico. Esta es la sintaxis general:
file [ruta-al-directorio]/*
Utilizar file para buscar el tipo de archivo MIME
La opción -i se utiliza para ver el tipo de archivo MIME. Consta de dos partes: un tipo y un subtipo. MIME utiliza una barra (/) para separar cada uno de ellos, sin espacios entre ellos.
Esta es la sintaxis general:
file -i nombredearchivo
Por ejemplo, para ver el tipo MIME del archivo test2.txt, introduzca:
file -i test2.txt
Este es el resultado del comando file anterior:

En lugar de declarar el formato del archivo como texto ASCII, el programa define el archivo como text/plain y charset=us-ascii.
Utilizar file para leer el tipo de archivo especial
El comando file te permite leer archivos especiales, como información del sistema, añadiendo la opción -s.
¡Importante! Ten en cuenta que solo un usuario root puede ejecutar el comando file junto con la opción -s. De lo contrario, recibirás un mensaje de error de permiso de lectura denegado.
Esta opción solo clasifica un archivo como archivo especial de bloque, enlace simbólico, directorio o inexistente.
Este es su formato general:
sudo file -s nombredearchivo
Por ejemplo, para leer el archivo ploop19269, introduce:
sudo file -s /dev/ploop19269
El resultado indica que ploop19269 es un sector de arranque DOS/MBR.

Utilizar file para leer un archivo comprimido
Hay dos formas de comprobar archivos comprimidos como ZIP o gzip: las opciones -z y -Z. La primera muestra información detallada y su contenido, mientras que la segunda solo muestra los tipos de archivo.
Esta es la sintaxis general de la opción -z:
file -z nombredearchivo
Por ejemplo, para leer los datos completos del archivo test2.txt.gz, introduce:
file -z test2.txt.gz
El resultado especifica que test2.txt.gz es un archivo comprimido gzip que contiene test2.txt:

Este es el formato general de la opción -Z:
file -Z nombredearchivo
Por ejemplo, para ver sólo el tipo de archivo de test.gz, introduce:
file -Z test.gz
Este comando solo mostrará el tipo de archivo dentro de test.gz: un texto ASCII.

Utilizar file para comprobar la versión analizada de un archivo
Añadir la opción -c te permite ver la versión analizada de cualquier archivo. Muestra información como el tipo, el código de operación y el valor. Por lo general, se utiliza junto con la opción -m para depurar un nuevo archivo mágico antes de instalarlo.
Esta es su sintaxis general:
file -c nombredearchivo
Por ejemplo, para imprimir la forma analizada del archivo test.txt, introduce:
file -c test.txt
El resultado debería ser similar a este:

Utilizar file para enumerar los tipos de archivo
El comando file muestra todos los tipos de archivo de un directorio utilizando rangos de estilo Regex. Escribe file y coloca los valores entre corchetes, seguidos de *.
Su sintaxis general es:
file [rango1-rango2]*
Por ejemplo, para examinar los archivos que comienzan en el rango de la a a la z, introduce:
file [a-z]*
El resultado debería ser similar a este:

Dado que este programa distingue entre mayúsculas y minúsculas, el resultado solo mostrará los archivos que comienzan con letras minúsculas de la a a la z. Para incluir los caracteres en mayúscula, añada otro rango. Por ejemplo:
file [a-z]* [A-Z]*
Este es el resultado:

Conclusión
En los sistemas UNIX, los nombres y las extensiones de los archivos pueden diferir de sus tipos reales. Por lo tanto, Linux proporciona el comando file para ayudar a los usuarios a determinar el tipo de un archivo.
Al ejecutarlo, utiliza las opciones adecuadas y especifica el nombre del archivo. Hay muchas variables aceptables para utilizar con el comando file, tales como:
- -c: comprueba la forma analizada de un archivo.
- -i: busca el tipo MIME.
- *: enumera varios archivos.
- -z: lee el contenido comprimido.
Esperamos que este artículo le haya ayudado a aprender a gestionar datos utilizando el comando file de Linux.
Si tiene alguna pregunta o sugerencia, déjala en la sección de comentarios a continuación.
Más comandos de Linux para la gestión de archivos
Cómo utilizar el comando locate de Linux para buscar cualquier archivo
Cómo utilizar el comando tar en Linux
Cómo renombrar un archivo
Cómo crear enlaces simbólicos (symlinks) en Linux para archivos y directorios
Cómo instalar y utilizar Linux Screen
Cómo leer un archivo con el comando sed
Cómo descomprimir archivos en Linux
Cómo utilizar el comando SCP para copiar y transferir archivos en Linux
Comando file de Linux – Preguntas frecuentes
En esta sección, responderemos a las preguntas más comunes sobre el comando file de Linux.
¿Qué hace exactamente el comando file de Linux?
Los nombres de archivo en UNIX pueden ser totalmente independientes de los tipos de archivo. Por lo tanto, es complicado determinar la información real.
Al ejecutar el comando file, se revela el formato que utiliza un archivo y se examina cada argumento mediante tres pruebas: pruebas del sistema de archivos, pruebas mágicas y pruebas de idioma.
La primera que tenga éxito mostrará el tipo de archivo.
¿Qué comando de Linux crea un archivo en blanco en el directorio actual?
Para crear uno o varios archivos vacíos, utiliza el comando touch. Viene con el sistema Linux y es especialmente útil cuando no se tienen datos que almacenar en ese momento.
Su sintaxis general es: touch nombre_archivo. Para crear varios archivos, introduce: touch nombre_archivo1 nombre_archivo2.