Le 13 janvier 2011 13:48, steve
<dlist@xxxxxxxxxx> a écrit :
Salut,
En ce début d'année, j'ai un besoin pressant de faire du ménage sur ma
machine. J'aimerai, pour commencer, supprimer tous les répertoires vides (cachés ou
pas).
Avec la commande « find », j'ai ça pour l'instant pour trouver les
répertoires vides, et ça semble marcher pas trop mal. Depuis mon home :
$ find . -maxdepth 1 -type d -empty -print | xargs /bin/rm -ri
../.covers
../.wicd
../.lyx
../.bins
../media_xwave.ch
../Public
../.debtags
../.gmpc
../.gnome2_private
../.audacity1.3-steve
../.gvfs
../.kino-history
Logiquement avec le -maxdepth 1, je devrais tous les trouver. Non ?
non avec maxdepth 1 tu vas descendre seulement d'un niveau dans l'arborescence pas plus. (depth = profondeur)
$ tree
..
├── a
├── b
│ └── asdasd.txt
├── c
└── d
$ mkdir -p d/d1/d2
$ tree
.
├── a
├── b
│ └── asdasd.txt
├── c
└── d
└── d1
└── d2
$ find . -maxdepth 1 -type d -empty
../c
./a
Ensuite il faut les supprimer. J'aimerai pouvoir supprimer les
répertoires un après l'autre, en me demandant de confirmer pour ne pas
faire de bêtises (option -i de rm). J'ai donc ajouté :
$ find . -maxdepth 1 -type d -empty -print | xargs /bin/rm -ri
et en faisant le test sur :
$ tree
..
├── a
├── b
│ └── asdasd.txt
├── c
└── d
4 directories, 1 file
j'obtiens (sur une ligne) :
/bin/rm : supprimer répertoire « ./a » ? /bin/rm : supprimer répertoire
« ./c » ? /bin/rm : supprimer répertoire « ./d » ? $
steve@localhost:~/test
Pourquoi ne pas utiliser -exec plutot que -print | xargs ?
$find . -maxdepth 1 -type d -empty -exec rm -Ri {} \;
rm : supprimer répertoire « ./d » ? n
rm : supprimer répertoire « ./c » ? n
rm : supprimer répertoire « ./a » ? y
$ tree
.
├── b
│ └── asdasd.txt
├── c
└── d