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 Cereal Killer . Évalué à 2.
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 . Évalué à 2.
$ man find && find . -exec du {} \;
[^] # Re: man xargs
Posté par anakin . Évalué à 1.
Merci pour la réponse ;)
# find -exec
Posté par sylvain cresto (site web personnel) . Évalué à 3.
find . -name motsclés -exec du {} \;
# Colaboration entre find et xargs
Posté par JJD . Évalué à 5.
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.