Aperçu
La commande file détermine le type d'un fichier en analysant son contenu plutôt que de se fier à son extension. Elle reconnaît divers formats tels que texte/binaire, formats exécutables (ELF), fichiers compressés, images/audio, et peut également afficher le type MIME et l'encodage.
Caractéristiques principales
- Détermine le type de fichier en fonction de son contenu réel, indépendamment de l'extension.
- Peut afficher le type MIME et l'encodage des caractères.
- Possibilité de déterminer la cible d'un lien symbolique ou le lien lui-même.
- Tente d'examiner le contenu des fichiers compressés (-z).
Exemples de scénarios d'utilisation
Situations où la commande file est particulièrement utile.
- Identification du format réel d'un fichier avec une extension incorrecte (ex: un PDF déguisé en .jpg).
- Détermination du type de fichiers sans extension.
- Branchement du traitement dans les scripts en fonction du type de fichier.
- Détermination du type MIME des fichiers téléchargés dans les services web/réseau.
- Détermination du type du lien symbolique lui-même ou de sa cible.
- Analyse du contenu interne des fichiers compressés.
- Identification du format des fichiers exécutables pour l'analyse de sécurité et la forensique.
Options principales
Options fréquemment utilisées, regroupées par situation.
1) Comportement de base & contrôle de la sortie
2) Spécification de l'entrée/cible
3) Base de données magique/Exclusions/Débogage
4) Aide/Version
Commande générée :
Essayez de combiner les commandes.
Description:
`file` Exécute la commande.
Essayez d'exécuter virtuellement les commandes avec l'IA en combinant les options ci-dessus.
Exemples d'utilisation
Exemples des modèles d'utilisation fréquents.
Identification de base
file /bin/ls
Affiche le type de fichier au format de base
Sortie brève sans nom de fichier
file -b /bin/ls
Sortie simple facile à traiter dans les scripts
Type MIME/Encodage
file --mime-type index.html && file --mime-encoding README.md
Utile pour l'identification des types dans les services web/pipelines
Vérifier l'intérieur des archives compressées
file -z backup.tar.gz
Estime le contenu réel d'un fichier compressé
Lien symbolique lui-même vs Cible
file -h symlink && file -L symlink
Examine le lien lui-même (-h) ou suit la cible pour l'examiner (-L)
Vérification en masse des types MIME avec find
find . -type f -print0 | xargs -0 file --mime-type
Transfère en toute sécurité les listes de fichiers en utilisant des séparateurs NUL
Emplacement de la base de données magique
Le chemin peut varier selon le système et la distribution.
🪄 DB magique compilée par défaut
/usr/share/file/magic.mgc
Emplacement par défaut pour la plupart des distributions
📁 Répertoire des sources magiques
/usr/share/file/magic/
Règles source avant compilation (originales, pas .mgc)
Codes de sortie
Référez-vous à cela lors de la gestion des branches dans les scripts.
Code | Signification |
---|---|
0 | Succès: identification réussie (ou tâche demandée réussie) |
1 | Problème général: fichier inexistant/inaccessible/identification échouée, etc. |
2 | Erreur d'utilisation ou erreur système |
Installation
La plupart des systèmes l'ont préinstallé, sinon installez-le comme suit.
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
Astuces & Précautions
- L'utilisation explicite de `--mime-type` et `--mime-encoding` permet d'éviter les différences de comportement de `-i/--mime` selon la distribution/version.
- Gestion des liens symboliques: utilisez `-h` pour voir le lien lui-même, et `-L` pour vérifier le fichier cible.
- Pour le traitement en masse, l'utilisation du modèle `find -print0 | xargs -0` est sûre même avec des noms de fichiers contenant des espaces/nouvelles lignes.
- Selon le format de compression, `-z` peut ne pas toujours vérifier l'intérieur. Décompressez d'abord si nécessaire pour vérifier.