[Linux-bruxelles] find et rm

Hervé Eychenne rv at eychenne.org
Jeu 30 Juin 15:28:34 CEST 2005


On Mon, Jun 13, 2005 at 10:25:15AM +0200, Jérôme Warnier wrote:

> Le vendredi 10 juin 2005 à 18:32 +0200, Marc Ledent a écrit :
> > Philippe Wauters wrote:

> > >Je cherche le moyen de trouver des fichier et de tous les supprimer par
> > >la suite, ça doit pas être très compliquer comme commande mais j'ai peur
> > >de tout effacer je suppose que ça doit être un truc du genre
> > >
> > >Find /home -name "*.tmp" | rm -rfi puis cher pas

> > J'ai beaucoup mieux (petite musique 'des chiffres et des lettres')
> > 
> > find /home -name "*.tmp" | xargs rm -rfi 
> > 
> > L'avantage de cette dernière méthode, c'est que pour un grand nombre de 
> > fichiers, c'est beaucoup plus rapide vu que 'rm' n'est lancé qu'une fois.

> Sauf que pour un vraiment grand nombre de fichiers, ça ne fonctionnera
> pas parce que rm va te dire que la liste des arguments est trop longue.

D'abord, la bonne commande (qui ne pose pas de question avant
l'effacement car j'ai enlevé le -i de rm, ainsi que le -r qui n'avait
pas sens pour effacer des fichiers) pour la question posée est :
( cd /home && find -type f -name "*.tmp" -print0 | xargs -r0 rm )

Bien noter que c'est un gnuisme, à la portabilité Unix aléatoire.

Avantages par rapport à la commande donnée plus haut :
- ligne de commande rm moins longue car pas de /home avant chaque fichier
- recherche des fichiers uniquement, comme demandé
- support des fichiers avec espaces
- pas d'invocation de rm si pas de fichiers trouvés
- pas de mode force (-f) pour rm -> on n'ignore pas les "vraies" erreurs

Ensuite, il ne me semble pas du tout que rm râle si la liste de
fichiers est trop longue, car xargs est justement conçu pour cela, et
invoque autant de fois la commande rm (avec la longueur maximale de
ligne de commande possible) que nécessaire.

 Hervé

-- 
 _
(°=  Hervé Eychenne
//)  Homepage:          http://www.eychenne.org/
v_/_ WallFire project:  http://www.wallfire.org/





Plus d'informations sur la liste de diffusion Linux-bruxelles