web-dev-qa-db-fra.com

Comment puis-je supprimer récursivement les sous-répertoires et les fichiers, mais pas le premier répertoire parent?

Je suis capable d'utiliser ce qui suit pour supprimer le répertoire cible et la récursive de tous ses sous-répertoires et de ses contenus.

find '/target/directory/' -type d -name '*' -print0 | xargs -0 rm -rf

Cependant, je ne veux pas que le répertoire cible soit supprimé. Comment puis-je supprimer simplement les fichiers de la cible, les sous-répertoires et leur contenu?

13
Michael Prescott

La réponse précédente est presque correcte. Cependant, vous ne devez pas citer les caractères Caractères Shell Glob si vous voulez qu'ils travaillent. Donc, c'est la commande que vous recherchez:

rm -rf "/target/directory with spaces/"*

Notez que le * est en dehors des citations doubles. Ce formulaire fonctionnerait également:

rm -rf /target/directory\ with\ spaces/*

Si vous avez le * Dans les citations, comme indiqué ci-dessus, il ne tentera que de supprimer littéralement le fichier unique nommé * Dans le répertoire cible.

11
pioto
find /target/directory/ -xdev -depth -mindepth 1 -exec rm -Rf {} \;
2
Sergey