396 votes

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

Le plus proche que j'ai obtenu est

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

mais cela ne fonctionne pas pour les fichiers qui n'ont pas d'extension...

6voto

Booji Boy Points 295

Si vous voulez é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 la touche retour, 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 alors que vous avez les droits de superutilisateur...

1voto

tbone Points 1930

Puisque cette question est constamment en tête de Google lorsque je fais moi-même une recherche à ce sujet :

Les autres réponses souffrent de problèmes différents :

  1. En voici quelques-unes . y .. ce qui est bruyant, déroutant et ennuyeux.

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

  3. Ils ne suppriment pas dans un ordre correct (le plus profond d'abord) pour permettre la suppression du répertoire.

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

  5. Il est difficile de les étendre correctement avec des paramètres supplémentaires (nous y reviendrons plus loin).

Donc, pour supprimer RECURSIVEMENT tous les fichiers ET dossiers d'un répertoire, faites ceci :

find "${DIR}" -xdev -mindepth 1 -printf "%d\t%y\t%p\0" | sort -z -r -n | cut -z -f3- | xargs -0 -r -- rm -d --

Notez que j'ai ajouté un -xdev afin d'éviter de descendre dans les montages (comme les /proc etc.).

Pourquoi pas ? -depth o -delete ?

Malgré le fait que les gens me descendent constamment pour cela, ces méthodes ont un inconvénient : il ne semble pas qu'elles soient assez extensibles pour permettre à -prune dans un sous-répertoire (sans introduire plus de problèmes). En revanche, avec cette méthode, vous pourriez insérer

-not \( -path "${DIR}/subdir" -prune \)

avant le -mindepth argument pour exclure subdir de voir son contenu supprimé.

0voto

V K Mavani Points 9

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

0voto

arviman Points 131

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

-d indique qu'il faut également supprimer les répertoires.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X