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
Ceci est beaucoup plus simple et fonctionne pour moi:
rm -r */
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
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.