← Sommaire SkyLinux

Leçon 69 : file et stat — Inspecter les fichiers

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.

1. La commande file — Déterminer le type de fichier

file analyze le contenu d'un fichier (pas juste l'extension) et vous dit ce qu'il contient vraiment.

# Syntaxe de base
file [options] fichier

Exemples pratiques

# Vérifier le type d'un fichier
$ file mon_fichier.txt
mon_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 text
document.pdf: PDF document, version 1.4
# Vérifier tous les fichiers d'un répertoire
$ file /home/*.sh
backup.sh: Bourne-Again shell script, ASCII text
install.sh: POSIX shell script, Unicode text, UTF-8 text executable
test_script.sh: empty

Options utiles

OptionDescription
-bMode bref : n'affiche pas le nom du fichier
-iAffiche le type MIME (ex: text/plain)
-zTente de lire le contenu des fichiers compressés
-LSuivre les liens symboliques
# Mode bref
$ file -b script.sh
Bourne-Again shell script, ASCII text
# Type MIME (pour le développement web par exemple)
$ file -i image.jpg
image.jpg: image/jpeg

2. La commande stat — Métadonnées détaillées

stat affiche des informations complètes sur un fichier : taille, dates, permissions, inode, etc.

# Syntaxe de base
stat [options] fichier

Exemple de sortie

$ stat /bin/bash
File: /bin/bash
Size: 1234567 Blocks: 2416 IO Block: 4096 regular file
Device: 801/8193 Inode: 131073 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2026-04-15 10:23:45.123456789 +0200
Modify: 2025-12-10 09:15:30.987654321 +0100
Change: 2025-12-10 09:15:30.987654321 +0100

Explication des champs

ChampDescription
SizeTaille du fichier en octets
BlocksNombre de blocs de 512 octets utilisés
IO BlockTaille du bloc d'entrée/sortie
InodeNuméro d'inode unique sur le système
LinksNombre de liens vers ce fichier
AccessPermissions (rwx) et dates d'accès
ModifyDate de dernière modification du contenu
ChangeDate de dernier changement de métadonnées

Options utiles de stat

# Format personnalisé (avec printf-style)
$ stat -c '%n %s %Y' fichier.txt
fichier.txt 2048 1709234567
FormatDescription
%nNom du fichier
%sTaille en octets
%YDate de modification (timestamp)
%aPermissions en octal
%uUID du propriétaire
%gGID du groupe
# Afficher uniquement le type de fichier (suite à link)
$ stat -c '%F' /bin/bash
regular file
# Ne pas suivre les liens symboliques
$ stat -L /bin/bash # Suit le lien
$ stat /bin/bash # Montre le lien lui-même

3. Différences clés entre file et stat

CommandeUsage principalCe qu'elle montre
fileIdentifier le type de contenuTexte, binaire, image, archive...
statVoir les propriétés du fichierTaille, dates, permissions, inode

4. Cas d'utilisation courants

Identifier un script avant exécution

# Avant d'exécuter un script inconnu, vérifiez son type
$ file script_mystere.sh
script_mystere.sh: Python script, ASCII text

Vérifier l'intégrité d'un téléchargement

# Vous avez téléchargé un fichier, vérifiez son type
$ file logiciel.tar.gz
logiciel.tar.gz: gzip compressed data, last modified: ...

Trouver les fichiers vides

# Lister tous les fichiers vides
$ find /tmp -type f -exec sh -c 'file -b "$1" | grep -q "^empty" && echo "$1"' _ {} \;

Audit de sécurité

# Trouver les fichiers qui ne sont pas des exécutables légitimes
$ file /usr/bin/* | grep -v "executable\|shared"

5. Combiner avec d'autres commandes

# 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/*

Exercice pratique

Essayez ces commandes sur votre système :

  1. file /bin/ls — Quel type de fichier est l'exécutable ls ?
  2. file /etc/hostname — Vérifiez le type du fichier hostname
  3. stat ~/.bashrc — Quelles sont les permissions de votre fichier bashrc ?
  4. file -i ~/Documents/* — Listez les types MIME de tous vos documents
  5. stat -c '%a %n' /etc/passwd — Affichez les permissions en octal du fichier passwd

Résumé

CommandeRôleExemple
fileDéterminer le type de contenufile image.png
statAfficher les métadonnées complètesstat 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".