Français

Supprimer un fichier et un dossier sous Linux en ligne de commande

4 min
Hébergement VPS/VDS

À la fin de ce tutoriel, vous saurez supprimer un fichier, un dossier vide, une arborescence complète et des fichiers filtrés par nom ou par ancienneté, en vérifiant chaque fois la cible avant d'agir. Sous Linux, il n'y a pas de corbeille en ligne de commande : une suppression est définitive. La méthode compte donc autant que la commande.

Prérequis

  • Un accès shell à une machine Linux (local ou SSH), par exemple un VPS Linux
  • Un utilisateur disposant des droits d'écriture sur le dossier concerné (ou sudo)
  • Une sauvegarde récente de ce qui est important

Vérifier la cible avant de supprimer

Placez-vous dans le bon dossier et listez son contenu. Cela prend deux secondes et évite la plupart des accidents.

Bash
pwd ls -la

Pour un motif (extension, préfixe), affichez d'abord ce qu'il va toucher. La commande rm utilisera exactement la même liste.

Bash
ls -d *.log

Supprimer un fichier

La commande de base est rm.

Bash
rm report.txt

Ajoutez -i pour qu'elle demande confirmation, et -v pour qu'elle affiche ce qu'elle supprime.

Bash
rm -iv report.txt

Contrôlez ensuite avec ls report.txt : le message « No such file or directory » confirme la suppression.

Supprimer plusieurs fichiers

Les jokers du shell permettent de cibler un lot. Listez d'abord avec ls, puis supprimez.

Bash
rm -v *.tmp rm -v photo_{01..05}.jpg

Évitez un joker nu comme rm * dans un dossier dont vous n'êtes pas certain. Si un nom de fichier commence par un tiret, utilisez -- pour signaler la fin des options :

Bash
rm -- -strange-file.txt

Supprimer un dossier vide

rmdir ne supprime que les dossiers vides. C'est voulu : il sert de garde-fou.

Bash
rmdir old_folder

Pour retirer aussi les parents devenus vides :

Bash
rmdir -p project/cache/tmp

Supprimer un dossier et tout son contenu

Il faut ici l'option récursive -r. Estimez d'abord ce que vous allez perdre.

Bash
du -sh old_project find old_project -type f | wc -l

Puis supprimez, avec confirmation :

Bash
rm -ri old_project

Sur des milliers de fichiers, la confirmation devient impraticable. L'option -f la désactive :

Bash
rm -rf old_project

Ne placez jamais une variable non vérifiée dans cette commande. Avec rm -rf "$DIR"/, si $DIR est vide, vous visez la racine. Dans un script, ajoutez set -u ou utilisez "${DIR:?}", qui interrompt l'exécution si la variable est vide.

Supprimer des fichiers selon leur ancienneté

find filtre sur des critères précis (nom, type, âge, taille). Le principe : exécuter d'abord sans action, puis ajouter -delete.

Bash
find /var/log/myapp -type f -name "*.log" -mtime +30

Si la liste correspond à ce que vous attendez :

Bash
find /var/log/myapp -type f -name "*.log" -mtime +30 -delete

-mtime +30 désigne les fichiers modifiés il y a plus de 30 jours. Placez -delete en dernier : find évalue les conditions de gauche à droite, et un -delete placé trop tôt supprime tout.

Effacer de façon plus sûre un fichier sensible

rm retire l'entrée du fichier, pas forcément les données du disque. shred écrase le contenu avant suppression.

Bash
shred -u -v secret.key

Cette méthode a des limites sur les SSD, les systèmes de fichiers journalisés ou les volumes avec snapshots, où d'anciennes données peuvent subsister. Pour des données réellement sensibles, le chiffrement du disque dès le départ reste la solution fiable.

Corriger les erreurs courantes

Permission denied

Vous n'avez pas le droit d'écriture sur le dossier parent (c'est lui qui contrôle la suppression, pas le fichier). Vérifiez avec ls -ld DIRECTORY, puis utilisez sudo si c'est légitime :

Bash
sudo rm -v /path/to/file

Operation not permitted, même avec sudo

Le fichier porte probablement l'attribut immuable. Consultez-le, retirez-le, puis supprimez.

Bash
lsattr file.txt sudo chattr -i file.txt sudo rm file.txt

Argument list too long

Le joker a produit plus d'arguments que le système n'en accepte. Passez par find, qui traite les fichiers un par un :

Bash
find . -maxdepth 1 -type f -name "*.tmp" -delete

Directory not empty ou Device or resource busy

Avec rmdir, le premier message est normal : le dossier contient des fichiers, y compris cachés (ls -A). Si un point de montage ou un processus l'utilise, identifiez-le avec lsof +D DIRECTORY ou findmnt, puis libérez-le avant de réessayer.

Pour vous entraîner sans risque, une instance jetable est pratique : sur un VPS, vous pouvez créer un dossier d'essai et vous tromper sans conséquence. D'autres guides du même type sont réunis dans la section tutoriels.

FAQ

Peut-on récupérer un fichier supprimé avec rm ?

Rarement et sans garantie. Des outils comme extundelete ou testdisk retrouvent parfois des données si vous cessez d'écrire sur le disque immédiatement. La seule protection fiable reste la sauvegarde.

Quelle est la différence entre rm -r et rm -rf ?

rm -r supprime récursivement mais demande confirmation sur les fichiers protégés en écriture. rm -rf force la suppression et ignore sans message les fichiers inexistants. Réservez-le aux cas où vous avez déjà vérifié la cible.

Comment supprimer un dossier dont le nom contient des espaces ?

Entourez le nom de guillemets ou échappez les espaces : rm -r "My folder" ou rm -r My\ folder. Sans cela, le shell traite chaque mot comme un élément distinct.

Existe-t-il une corbeille en ligne de commande ?

Oui, via le paquet trash-cli (commande trash-put), qui déplace les éléments vers la corbeille de l'utilisateur au lieu de les effacer. Sur un serveur, elle est rarement installée par défaut : prenez l'habitude de lister avant de supprimer.

Restez à jour avec les dernières offres, réductions et promotions spéciales.

Voir les promotions

Nous utilisons des cookies

Nous utilisons des cookies analytiques pour améliorer votre expérience sur notre site. Aucune donnée n'est revendue à des tiers. En savoir plus dans notre politique de confidentialité.