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 !)