Comment supprimer des fichiers et des répertoires dans le terminal Linux



Les commandes rm et rmdir sont des outils essentiels pour la suppression de fichiers et de répertoires dans les systèmes d’exploitation de type Unix, tels que Linux et macOS. Elles remplissent une fonction similaire aux commandes del et deltree que l’on retrouve dans les environnements Windows et DOS. Ces commandes sont très polyvalentes et proposent un large éventail d’options pour une gestion précise des données.

Il est crucial de comprendre que les éléments supprimés via rm et rmdir ne sont pas transférés dans une corbeille. L’action est immédiate et irréversible. En cas de suppression accidentelle, la restauration des données ne sera possible qu’à partir d’une sauvegarde préalable.

Supprimer des fichiers avec la commande rm

Dans sa forme la plus simple, rm permet de supprimer un unique fichier situé dans le répertoire courant. Pour ce faire, il suffit de saisir la commande rm, suivie d’un espace, puis du nom du fichier à éliminer.

rm fichier_1.txt

Si le fichier n’est pas dans le répertoire actuel, il est nécessaire de spécifier le chemin d’accès complet ou relatif menant à l’emplacement du fichier.

rm ./chemin/vers/le/fichier/fichier_1.txt

La commande rm autorise également la suppression de plusieurs fichiers simultanément. Il suffit de lister tous les noms de fichiers souhaités après la commande.

rm fichier_2.txt fichier_3.txt

Les caractères génériques (wildcards) offrent une grande flexibilité pour sélectionner des groupes de fichiers. L’astérisque * représente un nombre quelconque de caractères, tandis que le point d’interrogation ? représente un seul caractère. Par exemple, la commande suivante supprimera tous les fichiers image avec l’extension .png dans le répertoire courant.

rm *.png

Cette autre commande supprimera tous les fichiers dont l’extension est constituée d’un seul caractère, comme par exemple Fichier.1 et Fichier.2, mais pas Fichier.12.

rm *.?

Si un fichier est protégé en écriture, le système demandera une confirmation avant de procéder à sa suppression. Il faudra alors répondre par y (oui) ou n (non) et appuyer sur Entrée.

Pour minimiser les risques liés à l’utilisation des caractères génériques, l’option -i (interactive) permet de demander une confirmation pour chaque fichier. Cela garantit un meilleur contrôle sur les suppressions.

rm -i *.dat

À l’opposé, l’option -f (force) désactive toute demande de confirmation, même si les fichiers sont en lecture seule.

rm -f nom_du_fichier

Supprimer des répertoires avec la commande rm

Pour supprimer un répertoire vide, il faut utiliser l’option -d (directory). Il est également possible d’utiliser les caractères génériques dans les noms de répertoires, de la même manière qu’avec les noms de fichiers.

rm -d répertoire

Pour supprimer plusieurs répertoires vides simultanément, il suffit de les lister après l’option -d.

rm -d répertoire1 répertoire2 /chemin/vers/répertoire3

Pour supprimer des répertoires non vides, l’option -r (récursive) est indispensable. Cette option supprime non seulement le répertoire ciblé, mais aussi tous les fichiers et sous-répertoires qu’il contient.

rm -r répertoire1 répertoire2 répertoire3

Si un répertoire ou un fichier est protégé en écriture, une demande de confirmation sera affichée. Pour supprimer sans cette confirmation, il faut combiner les options -r et -f.

rm -rf répertoire

Il convient d’utiliser la commande rm -rf avec une grande prudence. Une erreur dans cette commande peut entraîner une perte de données significative ou un dysfonctionnement du système. Pour visualiser la structure des répertoires et les fichiers qui seront affectés par rm -rf, la commande tree est un outil précieux.

Pour installer tree sous Ubuntu ou une distribution basée sur Debian, utilisez la commande suivante :

sudo apt-get install tree

Pour les autres distributions, référez-vous à l’outil de gestion de paquets approprié.

L’exécution de la commande tree génère une représentation visuelle claire de la structure des répertoires et des fichiers à partir de l’emplacement où la commande est lancée.

tree

Un chemin d’accès peut être fourni à tree pour commencer la représentation à partir d’un autre point du système de fichiers.

tree chemin/vers/répertoire

La commande rm dispose également des options --one-file-system, --no-preserve-root et --preserve-root, mais elles sont réservées aux utilisateurs avancés. Une mauvaise manipulation peut avoir des conséquences désastreuses, allant jusqu’à la suppression complète du système de fichiers. Pour plus d’informations, il est conseillé de consulter la page de manuel de la commande rm.

Supprimer des répertoires avec la commande rmdir

La commande rmdir est une alternative à rm pour la suppression de répertoires. La principale distinction réside dans le fait que rmdir ne peut supprimer que des répertoires vides. Il est incapable de supprimer des fichiers directement.

Dans son utilisation de base, rmdir permet de supprimer un seul répertoire vide. Comme avec rm, il est possible de spécifier plusieurs noms de répertoires ou un chemin d’accès vers un répertoire.

Pour supprimer un répertoire situé dans le répertoire courant, il suffit de saisir son nom après la commande rmdir.

rmdir répertoire

Pour supprimer plusieurs répertoires, il faut lister leurs noms à la suite de rmdir.

rmdir répertoire1 répertoire2 répertoire3

Pour supprimer un répertoire qui n’est pas situé dans le répertoire courant, il faut indiquer son chemin complet.

rmdir /chemin/vers/répertoire

Si rmdir tente de supprimer un répertoire non vide, une erreur est signalée. Dans l’exemple suivant, rmdir supprime avec succès le répertoire clients, mais échoue à supprimer le répertoire projets car ce dernier contient des fichiers. Le répertoire projets est alors laissé intact, tout comme les fichiers qu’il contient.

Lorsqu’une erreur « Répertoire non vide » est renvoyée, rmdir interrompt le traitement des répertoires suivants. L’option --ignore-fail-on-non-empty permet de forcer rmdir à ignorer ces erreurs et à poursuivre avec les répertoires restants.

Dans l’exemple suivant, deux dossiers, work/reports et work/quotes, sont passés à rmdir. L’option --ignore-fail-on-non-empty est utilisée. Le dossier work/reports contient des fichiers, et rmdir échoue à le supprimer. Cependant, grâce à l’option, rmdir ignore l’erreur et traite le dossier suivant, work/quotes, qui est vide et donc supprimé.

Voici la commande utilisée :

rmdir --ignore-fail-on-non-empty work/reports /work/quotes

L’option -p (parents) permet de supprimer un répertoire ainsi que ses répertoires parents, pour autant qu’ils soient vides. rmdir commence par le répertoire cible, puis remonte vers ses parents. Si un répertoire parent est vide après la suppression du répertoire enfant, il sera également supprimé, et ainsi de suite.

Dans l’exemple suivant, la commande passée à rmdir est :

rmdir -p work/invoices

Les répertoires invoices et work sont ainsi supprimés comme demandé.

Que vous utilisiez Bash ou un autre shell, Linux offre des commandes puissantes et flexibles pour la suppression de fichiers et de répertoires directement depuis la ligne de commande. Ces outils conviennent particulièrement aux utilisateurs qui privilégient le terminal, qu’ils travaillent sur des serveurs sans interface graphique ou en session distante sur un système sans écran.

Ces commandes sont également très pratiques pour l’automatisation via des scripts shell. Un script exécuté par une tâche cron peut par exemple automatiser la suppression de fichiers journaux inutiles. Dans ce cas, il est essentiel de se souvenir de la puissance de ces commandes, de les tester minutieusement et de toujours conserver des sauvegardes récentes.