Comment supprimer des fichiers sur Mac et Linux avec le terminal

Introduction

Sur macOS et Linux, les fichiers peuvent être supprimés depuis la ligne de commande à l’aide d’outils comme rm, find et grep.

Les cas les plus courants sont :

  • supprimer un fichier
  • supprimer plusieurs fichiers
  • supprimer des fichiers dont le nom contient une sous-chaîne spécifique
  • supprimer des fichiers dont le contenu contient un motif de texte spécifique

Ce tutoriel présente des exemples pratiques qui fonctionnent à la fois sur macOS et Linux.

Avant de supprimer des fichiers, il est fortement recommandé d’effectuer d’abord une vérification à blanc, surtout lorsque vous utilisez des jokers comme *.

Supprimer un seul fichier

Pour supprimer un fichier, utilisez :

1
rm filename.txt

Exemple :

1
rm data.csv

Si le nom du fichier contient des espaces, placez-le entre guillemets :

1
rm "my file.txt"

Vous pouvez également utiliser l’option interactive -i pour demander une confirmation avant la suppression :

1
rm -i data.csv

Exemple de sortie :

1
remove data.csv?

Tapez y pour confirmer.

Supprimer plusieurs fichiers

Pour supprimer plusieurs fichiers à la fois, listez-les après rm :

1
rm file1.txt file2.txt file3.txt

Exemple :

1
rm data_01.csv data_02.csv data_03.csv

Avec confirmation :

1
rm -i data_01.csv data_02.csv data_03.csv

Supprimer des fichiers par extension

Pour supprimer tous les fichiers ayant une extension donnée dans le dossier courant, utilisez un joker.

Par exemple, pour supprimer tous les fichiers CSV :

1
rm *.csv

Avant de supprimer, il est plus sûr de lister d’abord les fichiers :

1
ls *.csv

Puis supprimez-les :

1
rm *.csv

Avec confirmation :

1
rm -i *.csv

Autre exemple, supprimer tous les fichiers .txt :

1
rm *.txt

Supprimer des fichiers dont le nom contient un texte spécifique

Si vous voulez supprimer des fichiers parce que leur nom de fichier contient une sous-chaîne spécifique, utilisez find.

Par exemple, supposons que vous ayez des fichiers comme :

1
2
3
viirs_efire_fire_pixels_NOAA21_20250321.csv.gz
viirs_efire_skipped_fp_variables_NOAA21_20250321.csv
viirs_efire_tile_statistics_NOAA21_20250321.csv

et que vous vouliez supprimer tous les fichiers dont le nom contient :

1
NOAA21_20250321

Commencez par faire une vérification à blanc :

1
find . -type f -name "*NOAA21_20250321*"

Puis supprimez les fichiers correspondants :

1
find . -type f -name "*NOAA21_20250321*" -exec rm {} +

Une version interactive plus sûre est :

1
find . -type f -name "*NOAA21_20250321*" -exec rm -i {} +

Ici :

  • . signifie rechercher à partir du répertoire courant
  • -type f signifie rechercher uniquement des fichiers
  • -name "*NOAA21_20250321*" signifie que le nom du fichier doit contenir cette sous-chaîne
  • -exec rm {} + supprime les fichiers correspondants

Recherche de noms de fichiers sans tenir compte de la casse

Pour supprimer des fichiers dont le nom contient une sous-chaîne, sans tenir compte des majuscules/minuscules, utilisez -iname :

1
find . -type f -iname "*noaa21_20250321*"

Puis supprimez-les :

1
find . -type f -iname "*noaa21_20250321*" -exec rm {} +

Version interactive :

1
find . -type f -iname "*noaa21_20250321*" -exec rm -i {} +

Supprimer des fichiers dont le contenu contient un texte spécifique

Si vous voulez supprimer des fichiers parce que leur contenu interne contient un texte spécifique, utilisez d’abord grep pour trouver les fichiers.

Par exemple, pour trouver les fichiers qui contiennent :

1
NOAA21_20250321

exécutez :

1
grep -rl "NOAA21_20250321" .

Ici :

  • grep recherche du texte
  • -r recherche récursivement dans les sous-dossiers
  • -l affiche uniquement les noms des fichiers qui contiennent le texte correspondant
  • . signifie rechercher à partir du répertoire courant

Après avoir soigneusement vérifié la liste, supprimez ces fichiers avec :

1
grep -rl "NOAA21_20250321" . | xargs rm

Cependant, cette version simple peut poser problème avec les noms de fichiers contenant des espaces.

Une version plus sûre est :

1
grep -rlZ "NOAA21_20250321" . | xargs -0 rm

Version interactive :

1
grep -rlZ "NOAA21_20250321" . | xargs -0 rm -i

Alternative portable pour les fichiers contenant du texte

Une autre approche portable consiste à combiner find, grep et rm.

Commencez par prévisualiser les fichiers :

1
find . -type f -exec grep -l "NOAA21_20250321" {} +

Puis supprimez-les :

1
find . -type f -exec grep -l "NOAA21_20250321" {} + | xargs rm

Pour les noms de fichiers contenant des espaces, utilisez :

1
2
3
4
find . -type f -exec grep -l "NOAA21_20250321" {} + | while IFS= read -r file
do
    rm "$file"
done

Version interactive :

1
2
3
4
find . -type f -exec grep -l "NOAA21_20250321" {} + | while IFS= read -r file
do
    rm -i "$file"
done

Différence importante entre recherche dans les noms de fichiers et recherche dans le contenu

Une erreur courante consiste à utiliser grep lorsque l’on cherche des noms de fichiers.

Par exemple :

1
grep -rl "NOAA21_20250321" .

recherche à l’intérieur des fichiers.

Cela ne recherche pas dans les noms de fichiers.

Pour rechercher dans les noms de fichiers, utilisez :

1
find . -type f -name "*NOAA21_20250321*"

Résumé :

1
2
3
Recherche dans les noms de fichiers  -> utiliser find
Recherche à lintérieur des fichiers -> utiliser grep
Supprimer des fichiers              -> utiliser rm

Supprimer des fichiers dans un dossier spécifique

Pour rechercher dans un dossier spécifique au lieu du répertoire courant, remplacez . par le chemin du dossier.

Exemple sur un disque externe macOS :

1
find /Volumes/HD15TB/Datasets -type f -name "*NOAA21_20250321*"

Puis supprimez les fichiers correspondants :

1
find /Volumes/HD15TB/Datasets -type f -name "*NOAA21_20250321*" -exec rm {} +

Exemple sur Linux :

1
find /home/user/Datasets -type f -name "*NOAA21_20250321*"

Puis supprimez les fichiers correspondants :

1
find /home/user/Datasets -type f -name "*NOAA21_20250321*" -exec rm {} +

Supprimer des fichiers dont le nom contient des espaces

Si un fichier contient des espaces dans son nom, utilisez des guillemets :

1
rm "my file.txt"

Avec find, la syntaxe suivante gère correctement les noms de fichiers contenant des espaces :

1
find . -type f -name "*my text*" -exec rm {} +

Version interactive :

1
find . -type f -name "*my text*" -exec rm -i {} +

Supprimer un fichier dont le nom commence par un tiret

Si un nom de fichier commence par -, rm peut l’interpréter comme une option.

Par exemple, un fichier nommé :

1
-test.txt

peut être supprimé avec :

1
rm -- -test.txt

ou :

1
rm ./-test.txt

Supprimer des dossiers vides

Pour supprimer un dossier vide, utilisez :

1
rmdir folder_name

ou :

1
rm -d folder_name

Pour supprimer un dossier et tout ce qu’il contient, utilisez :

1
rm -r folder_name

Soyez prudent avec la suppression récursive. Vérifiez toujours le chemin du dossier avant d’exécuter rm -r.

Version interactive :

1
rm -ri folder_name

Méthode plus sûre avant de supprimer des fichiers

Une bonne méthode consiste à :

Étape 1 : Prévisualiser les fichiers correspondants

1
find . -type f -name "*NOAA21_20250321*"

Étape 2 : Supprimer de manière interactive

1
find . -type f -name "*NOAA21_20250321*" -exec rm -i {} +

Étape 3 : Supprimer directement seulement lorsque vous êtes sûr

1
find . -type f -name "*NOAA21_20250321*" -exec rm {} +

Exemples pratiques

Exemple 1 : Supprimer un fichier

1
rm output.csv

Exemple 2 : Supprimer plusieurs fichiers

1
rm output_01.csv output_02.csv output_03.csv

Exemple 3 : Supprimer tous les fichiers CSV dans le dossier courant

1
rm *.csv

Exemple 4 : Supprimer les fichiers dont le nom contient une date

1
find . -type f -name "*20250321*" -exec rm {} +

Exemple 5 : Supprimer les fichiers dont le nom contient le nom d’un satellite et une date

1
find . -type f -name "*NOAA21_20250321*" -exec rm {} +

Exemple 6 : Supprimer les fichiers dont le contenu contient un texte spécifique

1
grep -rlZ "NOAA21_20250321" . | xargs -0 rm

Exemple 7 : Prévisualiser les fichiers avant de les supprimer

1
find . -type f -name "*NOAA21_20250321*"

Exemple 8 : Supprimer les fichiers correspondants de manière interactive

1
find . -type f -name "*NOAA21_20250321*" -exec rm -i {} +

Conclusion

Sur macOS et Linux, les commandes les plus utiles pour supprimer des fichiers sont rm, find et grep.

Utilisez rm lorsque vous connaissez déjà le nom du fichier :

1
rm file.txt

Utilisez find lorsque le nom du fichier contient une sous-chaîne spécifique :

1
find . -type f -name "*substring*" -exec rm {} +

Utilisez grep lorsque le contenu du fichier contient un texte spécifique :

1
grep -rlZ "text" . | xargs -0 rm

La meilleure habitude de sécurité est de toujours prévisualiser les fichiers correspondants avant de les supprimer.

Références