Comment supprimer tous les fichiers d'un répertoire?

224

Le plus proche que j'ai eu est

# rm /path/to/directory/*.*

mais cela ne fonctionne pas pour les fichiers sans extension ...

    
posée user784637 06.09.2011 - 09:58
la source

9 réponses

262

Linux n'utilise pas d'extensions. Il appartient au créateur du fichier de décider s’il souhaite que le nom porte une extension. Linux examine le premier octet pour savoir à quel type de fichier il s’agit.

Pour supprimer tout ce qui se trouve dans un répertoire, utilisez:

rm /path/to/directory/*

Vous pouvez utiliser l'option -r , par exemple:

rm -r /path/to/directory/*

pour supprimer également tous les sous-répertoires (ainsi que tout leur contenu) dans le répertoire dont vous supprimez le contenu. Sinon, une erreur s'affichera pour vous informer que le répertoire n'est pas supprimé.

    
réponse donnée Rinzwind 06.09.2011 - 10:06
la source
134
  • Pour supprimer le dossier avec tout son contenu ( y compris tous les dossiers intérieurs ):

    rm -rf /path/to/directory
    
  • Pour supprimer tout le contenu du dossier ( y compris tous les dossiers intérieurs ), mais pas le dossier lui-même:

    rm -rf /path/to/directory/*
    

    ou

    rm -rf /path/to/directory/{*,.*}
    

    si vous voulez vous assurer que les fichiers / répertoires cachés sont également supprimés.

  • Pour supprimer tous les "fichiers" d'un dossier ( pas supprimer des dossiers intérieurs ):

    rm -f /path/to/directory/{*,.*}
    

Où:

  • rm - signifie " remove "
  • -f - signifie " force ", ce qui est utile lorsque vous ne souhaitez pas que le système vous demande si vous souhaitez supprimer une archive, par exemple.
  • -r - signifie " récursif ", ce qui signifie que vous souhaitez consulter tous les dossiers de manière récursive et tout supprimer.
réponse donnée Lilian A. Moraru 07.09.2011 - 19:26
la source
34

Pour supprimer tous les fichiers du répertoire (y compris les fichiers cachés et les sous-répertoires), exécutez:

rm -rf /path/to/directory/{*,.*}
    
réponse donnée Leonid V. Fedorenchik 23.11.2014 - 10:38
la source
8

Si vous souhaitez supprimer uniquement les fichiers de / path / to / directory, vous pouvez le faire

.
find /path/to/directory -type f -print0| xargs -0 rm 

ou

find /path/to/directory -type f -exec rm '{}' \;

Vous pouvez faire des charges avec find , l’avantage est de pouvoir lister ce qui est trouvé sans le rediriger vers rm afin de voir ce qui sera supprimé avant de commencer.

    
réponse donnée Richard Holloway 06.09.2011 - 14:13
la source
6

Si vous souhaitez également supprimer tous les sous-répertoires et le répertoire lui-même, vous pouvez utiliser rm -rf /path/to/directory . Mais vérifiez toujours votre ligne avant d'appuyer sur Entrée. rm -rf peut également causer beaucoup de dégâts, par exemple. si vous insérez accidentellement un espace après la première barre oblique en ayant les autorisations de superutilisateur ...

    
réponse donnée Tobias Kienzler 07.09.2011 - 10:51
la source
6

Pour supprimer tous les fichiers et répertoires (y compris les masqués ) d'un répertoire, vous pouvez essayer les solutions suivantes:

  • supprimez le dossier, puis recréez-le

    rm -rf dir_name && mkdir dir_name
    
  • utilisez find

    find dir_name -mindepth 1 -delete  
    

Ici, nous spécifions -mindepth 1 pour exclure le répertoire dir_name lui-même.
Consultez le lien suivant:
link

    
réponse donnée zeekvfu 27.11.2013 - 17:05
la source
1

Vous pouvez cd dans le répertoire, puis exécuter la commande rm *.* comme dans DOS si vous vous en souvenez.

    
réponse donnée V K Mavani 01.05.2013 - 02:59
la source
0

Pour supprimer le répertoire actuel, vous pouvez par exemple utiliser rm -d ./*

-d demande de supprimer également les répertoires.

    
réponse donnée arviman 29.08.2017 - 09:17
la source
-1

Étant donné que cette question est constamment au sommet de Google lorsque je le recherche moi-même:

Les autres réponses présentent des problèmes différents:

  1. Certains d'entre eux incluent . et .. , ce qui est bruyant, déroutant et gênant.

  2. Certains oublient les fichiers cachés (fichiers commençant par un point).

  3. Ils ne suppriment pas dans l'ordre correct (le plus profond en premier) pour permettre la suppression de répertoires.

  4. Ils descendent dans d'autres systèmes de fichiers (montés), ce qui est souvent indésirable.

  5. Ils sont difficiles à étendre correctement avec des paramètres supplémentaires (plus de détails ci-dessous).

Donc, pour supprimer tous les fichiers ET les dossiers d’un répertoire, procédez comme suit:

find "${DIR}" -xdev -mindepth 1 -printf "%d\t%y\t%p
-not \( -path "${DIR}/subdir" -prune \)
" | sort -z -r -n | cut -z -f3- | xargs -0 -r -- rm -d --

Notez que j'ai ajouté un argument -xdev pour empêcher la descente dans les montages (comme /proc etc.).

Pourquoi ne pas -depth ou -delete ?

Bien que les gens me votent constamment pour cela, ces méthodes ont un inconvénient: elles ne semblent pas suffisamment extensibles pour permettre à -prune un sous-répertoire (sans introduire plus de problèmes). Contrairement à cette méthode, vous pourriez insérer

find "${DIR}" -xdev -mindepth 1 -printf "%d\t%y\t%p
-not \( -path "${DIR}/subdir" -prune \)
" | sort -z -r -n | cut -z -f3- | xargs -0 -r -- rm -d --

avant l'argument -mindepth pour exclure subdir du contenu de celui-ci est supprimé.

    
réponse donnée Mehrdad 21.05.2018 - 02:54
la source

Lire d'autres questions sur les étiquettes