Re: [ssfr] Trouver et supprimer des répertoires vides

[ Thread Index | Date Index | More debianworld.org/shellscript-fr Archives ]




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


--
Kévin


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/