find -delete avant ou après sur Linux ?

find

Pour faire une suppression avec la commande « find » sous linux, il y a une fonction très pratique, elle se nomme -delete. Suivant la documentation du man entre debian et ubuntu, il peut y avoir une très grosse erreur.

Vous allez me dire que placer le -delete n’importe où dans la commande changera pas grand chose ! Et bien je vais vous répondre que si ! En fonction de l’endroit où elle est placée, elle peut engendrer de très gros problèmes pour vos fichiers !

Voyons ensemble ce que nous dit la documentation de Debian et celle de Ubuntu :

Debian (e.g : version etch) :

  -delete
         Delete  files; true if removal succeeded.
         If the removal failed, an error message is issued.
         Use of this action automatically turns on the '-depth' option.

Ubuntu :

 -delete
    Delete files; true if removal succeeded.
    If the removal failed, an error message is issued.
    If -delete fails, find's exit status  will  be
    nonzero (when it eventually exits).
    Use of -delete automatically turns on the -depth option.

    Warnings:  Don't  forget  that  the  find  command line is evaluated as an expression,
    so putting -delete first will make find try to delete
    everything below the starting points you specified.  [...]

Et là on se rend vraiment compte de la gravité des choses ! Si vous le mettez en début de ligne, find va détruire récursivement tout ce qui se trouve sur son chemin. En gros, la commande va faire exactement la même chose que si vous aviez fait un « rm -rf * ».

En revanche si vous le placez à la fin, vous vous contentez de supprimer les fichiers qu’il trouve selon les critères de recherche spécifiés…

Moralité de l’histoire : au début ça défonce tout tandis qu’à la fin ça fait son boulot !

Il semblerait que le problème soit résolu à partir de la version lenny, mais le souci c’est que Debian est pas foutu de mettre à jour la documentation du « man ».

Et je vous conseille de ne pas utiliser le -delete devant sinon vous risqueriez de perdre tous les fichiers de votre serveur de production alors que vous cherchiez juste à supprimer les fichiers Thumbs.db de vos tux !)

You can leave a response, or trackback from your own site.

Leave a Reply