Forum général.cherche-logiciel Caractère spéciaux avec Xargs

Posté par  .
Étiquettes : aucune
0
6
juin
2007
Salut à tous !
J'essaye de faire un truc en ligne de commande :
Avec la commande
find . -name motsclés

J'obtiens une liste de fichier. Ensuite, je veux connaître la taille de ces fichiers en rajoutant
find . -name motsclés | xargs du

L'ennui, c'est que la plupart des fichiers ont des caractères spéciaux (des espaces principalement) et donc il y a un message d'erreur.

Comment faire prendre en compte ceci ?

Merci
  • # man xargs

    Posté par  . Évalué à 2.

    sache mon ami qu'en "ligne de commande", il existe une commande essentielle avant de venir poster sur un forum (dlfp ou autre) : man

    Dans ton cas, un petit man xargs t'aurais appris que tu peux spécifier à xargs par quoi dois finir la ligne qui le nourrit. En l'occurence, un \n (caractère de fin de ligne unix).
    Le comportement par défaut d'xargs lui dis de s'arreter à chaque espace comme tu l'a remarqué, mais forcemment, c'est pas c'que tu souhaites.

    Donc, avec tout ses élements en poche, un petit :

    $ man man && man xargs && find . | xargs -d "\n" du

    devrais faire l'affaire
    • [^] # man find

      Posté par  . Évalué à 2.

      Note que tu pouvais aussi parvenir à tes fins avec un man find

      $ man find && find . -exec du {} \;
    • [^] # Re: man xargs

      Posté par  . Évalué à 1.

      Ouais je sais désolé, j'avais trop la flemme de lire le manuel (il est assez long) et de chercher l'option correspondante ;)

      Merci pour la réponse ;)
  • # find -exec

    Posté par  (site web personnel) . Évalué à 3.

    Tu peux aussi le faire sans passer par xargs en utilisant le paramètre -exec de find:


    find . -name motsclés -exec du {} \;
  • # Colaboration entre find et xargs

    Posté par  . Évalué à 5.

    Bonjour,

    Parallèlement aux solutions déjà proposées, il est aussi possible d'utiliser conjointement les options "-print0" de find (écriture des noms des fichiers sans modification et séparés par des caractères nul) et "-0" de xargs.
    Cela donnerait donc :
    find . -name motsclés -print0 | xargs -0 du

    Cette méthode a l'avantage de fonctionner avec tous les caractères ésotériques que peuvent contenir les noms de fichiers, y compris les sauts de ligne.

    A+
    JJD

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.