Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

Retourner aux forums || Retourner au forum general.cherche-logiciel

general.cherche-logiciel : Caractère spéciaux avec Xargs

Posté par anakin () le 06 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

> Lire le message (5 commentaires, moyenne: 2,6).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

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

man xargs

Posté par Cereal Killer (Jabber id, ) le 06/06/2007 à 19:23. (lien). É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 Cereal Killer (Jabber id, ) le 06/06/2007 à 19:36. (lien). Évalué à 2.

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

    $ man find && find . -exec du {} \;

  • [^]Re: man xargs

    Posté par anakin () le 06/06/2007 à 20:12. (lien). É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 sylvain cresto (page perso, ) le 06/06/2007 à 19:37. (lien). É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 JJD () le 07/06/2007 à 06:37. (lien). É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

Revenir en haut de page || Retourner aux forums || Retourner au forum general.cherche-logiciel