• [^] # Re: xargs

    Posté par . En réponse au message action sur le résultat d'une commande. Évalué à 3.

    Attention aux caractères foireux dans les noms de fichiers (espaces, guillemets, etc. -- enfin pour pas être malin pour mettre des guillemets hein, mais sur des partages samba tout peut arriver :) !

    Pour utiliser xargs de manière plus robuste, il faut demander à ls de quoter/échapper les noms avec -Q (sinon xargs peut couper le nom en deux et rechercher deux fichiers distincts) :
    ls -Q | grep A | grep -v B | grep .C | xargs rm --

    Si on fait un find (cas plus général ?), alors :
    find . -name "toto" -print0 | xargs -0 do_something --

    La doc de xargs indique bien ce problème potentiel [ avec une typo dans ma version, ils parlent de l'option -O mais c'est bien -0 (zéro) ]

    Quand au script avec la boucle 'for' quelques message plus haut, il souffre du même problème et ne fonctionne pas si un nom de fichier contient un espace : le for va faire deux boucles avec les portions de nom...
    Ah les joies du shell ! :(