Quand vous travaillez sur un serveur Linux, vous tomberez souvent sur des fichiers mystérieux : des binaires, des scripts, des archives… Deux commandes essentielles permettent d'inspecter n'importe quel fichier sans l'ouvrir : file et stat.
file analyze le contenu d'un fichier (pas juste l'extension) et vous dit ce qu'il contient vraiment.
# Syntaxe de basefile [options] fichier# Vérifier le type d'un fichier$ file mon_fichier.txtmon_fichier.txt: ASCII text# Vérifier plusieurs fichiers à la fois$ file /bin/ls /etc/passwd ~/document.pdf/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV)/etc/passwd: ASCII textdocument.pdf: PDF document, version 1.4# Vérifier tous les fichiers d'un répertoire$ file /home/*.shbackup.sh: Bourne-Again shell script, ASCII textinstall.sh: POSIX shell script, Unicode text, UTF-8 text executabletest_script.sh: empty| Option | Description |
|---|---|
-b | Mode bref : n'affiche pas le nom du fichier |
-i | Affiche le type MIME (ex: text/plain) |
-z | Tente de lire le contenu des fichiers compressés |
-L | Suivre les liens symboliques |
# Mode bref$ file -b script.shBourne-Again shell script, ASCII text# Type MIME (pour le développement web par exemple)$ file -i image.jpgimage.jpg: image/jpegstat affiche des informations complètes sur un fichier : taille, dates, permissions, inode, etc.
# Syntaxe de basestat [options] fichier$ stat /bin/bash File: /bin/bash Size: 1234567 Blocks: 2416 IO Block: 4096 regular fileDevice: 801/8193 Inode: 131073 Links: 1Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)Access: 2026-04-15 10:23:45.123456789 +0200Modify: 2025-12-10 09:15:30.987654321 +0100Change: 2025-12-10 09:15:30.987654321 +0100| Champ | Description |
|---|---|
Size | Taille du fichier en octets |
Blocks | Nombre de blocs de 512 octets utilisés |
IO Block | Taille du bloc d'entrée/sortie |
Inode | Numéro d'inode unique sur le système |
Links | Nombre de liens vers ce fichier |
Access | Permissions (rwx) et dates d'accès |
Modify | Date de dernière modification du contenu |
Change | Date de dernier changement de métadonnées |
# Format personnalisé (avec printf-style)$ stat -c '%n %s %Y' fichier.txtfichier.txt 2048 1709234567| Format | Description |
|---|---|
%n | Nom du fichier |
%s | Taille en octets |
%Y | Date de modification (timestamp) |
%a | Permissions en octal |
%u | UID du propriétaire |
%g | GID du groupe |
# Afficher uniquement le type de fichier (suite à link)$ stat -c '%F' /bin/bashregular file# Ne pas suivre les liens symboliques$ stat -L /bin/bash # Suit le lien$ stat /bin/bash # Montre le lien lui-même| Commande | Usage principal | Ce qu'elle montre |
|---|---|---|
file | Identifier le type de contenu | Texte, binaire, image, archive... |
stat | Voir les propriétés du fichier | Taille, dates, permissions, inode |
# Avant d'exécuter un script inconnu, vérifiez son type$ file script_mystere.shscript_mystere.sh: Python script, ASCII text# Vous avez téléchargé un fichier, vérifiez son type$ file logiciel.tar.gzlogiciel.tar.gz: gzip compressed data, last modified: ...# Lister tous les fichiers vides$ find /tmp -type f -exec sh -c 'file -b "$1" | grep -q "^empty" && echo "$1"' _ {} \;# Trouver les fichiers qui ne sont pas des exécutables légitimes$ file /usr/bin/* | grep -v "executable\|shared"# Trouver tous les fichiers texte dans un répertoire$ find /home -type f -exec file {} \; | grep "ASCII text"# Lister les plus gros fichiers avec leur taille exacte$ find /var/log -type f -exec stat -c '%s %n' {} \; | sort -rn | head -5# Vérifier tous les fichiers d'un répertoire récursivement$ file /home/utilisateur/*Essayez ces commandes sur votre système :
file /bin/ls — Quel type de fichier est l'exécutable ls ?file /etc/hostname — Vérifiez le type du fichier hostnamestat ~/.bashrc — Quelles sont les permissions de votre fichier bashrc ?file -i ~/Documents/* — Listez les types MIME de tous vos documentsstat -c '%a %n' /etc/passwd — Affichez les permissions en octal du fichier passwd| Commande | Rôle | Exemple |
|---|---|---|
file | Déterminer le type de contenu | file image.png |
stat | Afficher les métadonnées complètes | stat fichier |
Ces deux commandes sont vos meilleures alliées pour inspecter n'importe quel fichier sous Linux. file vous dit "ce que contient le fichier", tandis que stat vous dit "tout ce qu'il faut savoir sur ce fichier".