web-dev-qa-db-fra.com

Comment supprimer uniquement les répertoires et laisser les fichiers intacts

J'ai des centaines de répertoires et de fichiers dans un seul répertoire.

Quelle est la meilleure façon de supprimer uniquement les répertoires (que les répertoires contiennent ou non quelque chose, supprimez-les tous)

J'utilise actuellement ls -1 -d */, et enregistrez-les dans un fichier, faites sed, puis exécutez-le. C'est assez long. Je cherche une meilleure façon de supprimer uniquement les répertoires

49
kopelkan

Ceci est beaucoup plus simple et fonctionne pour moi:

rm -r */
158
Cas

find . -maxdepth 1 -mindepth 1 -type d

ensuite

find . -maxdepth 1 -mindepth 1 -type d -exec rm -rf '{}' \;

Pour ajouter une explication:

find démarre dans le répertoire courant en raison de . et reste dans le répertoire courant uniquement avec -maxdepth et -mindepth les deux sont définis sur 1. -type d indique à find de ne correspondre qu'aux éléments qui sont des répertoires.

find possède également un -exec flag qui peut transmettre ses résultats à une autre fonction, dans ce cas rm. les '{}' \; est la façon dont ces résultats sont transmis. Voir cette réponse pour une explication plus complète de ce que {} et \; do

18
catalint

Première exécution:

find /path -d -type d

pour vous assurer que la sortie semble saine, alors:

find /path -d -type d -exec rm -rf '{}' \;

-type d ne recherche que les répertoires, puis -d s'assure de mettre les répertoires enfants avant le parent.

12
onteria_