La comanda file et diu de quin tipus és un fitxer mirant-ne el contingut, no el nom. A Linux l’extensió és només una convenció: un .jpg pot ser en realitat un ZIP, i un fitxer sense extensió pot ser un script, un executable o un document de text. file llegeix els primers bytes, els compara amb una base de dades de signatures (els magic numbers) i et dona la resposta.
Sintaxi
file [opcions] fitxer...
Opcions més útils
| Opció | Què fa |
|---|---|
-b | Mostra només el resultat, sense el nom del fitxer (útil en scripts) |
-i | Mostra el tipus MIME i la codificació (text/plain; charset=utf-8) |
--mime-type | Només el tipus MIME |
--mime-encoding | Només la codificació de caràcters |
-L | Segueix els enllaços simbòlics i analitza el fitxer on apunten |
-z | Mira dins dels fitxers comprimits |
-s | Llegeix també dispositius de blocs i de caràcters (particions, discos) |
-f llista | Llegeix els noms dels fitxers que ha d’analitzar d’un fitxer |
Exemples
Analitzar tots els fitxers d’un directori:
$ file *
antic.txt: ISO-8859 text, with CRLF line terminators
carpeta: directory
copia.tar.gz: gzip compressed data, from Unix, original size modulo 2^32 10240
dades.json: JSON text data
enllac: symbolic link to notes.txt
foto.jpg: gzip compressed data, from Unix, original size modulo 2^32 10240
imatge.png: PNG image data, 1 x 1, 8-bit/color RGB, non-interlaced
notes.txt: Unicode text, UTF-8 text
programa: ELF 64-bit LSB pie executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID[sha1]=87a7eadc711cd002f7b00ba923179e5713498159, for GNU/Linux 3.7.0, stripped
script.sh: Bourne-Again shell script, ASCII text executable
Fixa’t en uns quants detalls:
foto.jpgno és una imatge: és un fitxer comprimit amb gzip al qual algú ha posat l’extensió.jpg.fileno s’ha deixat enganyar.antic.txtés text en ISO-8859 (Latin-1) amb finals de línia de Windows (CRLF), mentre quenotes.txtés UTF-8. És la pista per convertir-lo ambiconv.programaés un executable ELF de 64 bits per a ARM (aarch64): no funcionarà en un PC x86_64. Mira la fitxa d’arch.script.shés un script de Bash;fileho sap per la primera línia (#!/bin/bash).
Saber el tipus MIME i la codificació:
$ file -i notes.txt antic.txt imatge.png
notes.txt: text/plain; charset=utf-8
antic.txt: text/plain; charset=iso-8859-1
imatge.png: image/png; charset=binary
Només la codificació, abans de convertir un fitxer de text:
$ file --mime-encoding notes.txt antic.txt
notes.txt: utf-8
antic.txt: iso-8859-1
Resultat net per fer-lo servir en un script:
$ file -b --mime-type foto.jpg
application/gzip
Mirar dins d’un fitxer comprimit:
$ file -z copia.tar.gz
copia.tar.gz: POSIX tar archive (GNU) (gzip compressed data, from Unix)
Seguir un enllaç simbòlic:
$ file enllac
enllac: symbolic link to notes.txt
$ file -L enllac
enllac: Unicode text, UTF-8 text
Saber quin sistema de fitxers té una partició (cal ser root per llegir el dispositiu):
sudo file -s /dev/sda1
Per a què et serà útil
- Abans d’obrir o executar un fitxer que has baixat o que t’han enviat: comprova que és el que diu ser.
- Problemes d’accents: saber si un fitxer de text és UTF-8 o Latin-1 abans de convertir-lo.
Exec format error(o unNo such file or directoryestrany) en executar un programa que existeix: sovint és un binari d’una altra arquitectura o de 32 bits en un sistema de 64, ifilet’ho diu de seguida.- Fitxers sense extensió dins de
/usr/bin,/etco un directori de còpies de seguretat.
Compte amb…
file fa una suposició basada en signatures, no una validació completa. Un fitxer pot tenir una capçalera correcta i estar corrupte, i un fitxer de text curt es pot identificar de manera imprecisa. Tampoc et diu si un fitxer és segur: un PDF o un document d’Office maliciós continua sent un PDF o un document d’Office.