bonjour,
j'essaie comprendre ce qui est dit dans l'article ci-dessous
http://en.wikipedia.org/wiki/Xargs#cite_note-1
Notamment ceci
si on tape les commandes suivantes
le comportement attendu (par les newbies) est l'effacement du fichier 'not important_file', MAIS le comportement REEL est l'effacement du fichier important_file (c'est quand même un comportement surprenant)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 touch important_file touch 'not important_file' find -name not\* | xargs rm
En fait la commande suivante apporte la solution (après avoir créé les fichiers en question par les commandes touch)
Donc, entre find et rm il y a conversion des \n en \0 dans le flux de sortie de find et ajout de l'option -0 dans xargs
Code : Sélectionner tout - Visualiser dans une fenêtre à part find -name not\* | tr \\n \\0 | xargs -0 rm
Je vois bien que çà marche (encore une fois c'est surprenant), mais je ne sais pas EXACTEMENT pourquoi....le problème des séparateurs et (plus généralement) des commandes qui sont ou non orientées ligne me paraît complexe....je ne sais jamais quel est le caractère de fin de ligne
Pourriez vous me donner une explication sur l'exemple précédent ?
Merci d'avance
Partager