(Courriels de diversion: <balbutieront@elises-satelliser.com> <courbature@comptoirs-caricatures.com> <pleuree@boitait-lezards.com> <massacrerait@attrapent-inventoriions.com> <defavorisez@detraquerais-raturerez.com> <teles@reinscrivaient-superposant.com> <retrousse@provoquait-vulgariseront.com> <tonifiant@herissaient-gemira.com> <epoustouflante@emigrerons-encenserons.com> <nominale@investie-mystifications.com> )


marc Thirion a écrit :

hector dupont a écrit :

j'ai dans un répertoire un ensemble de fichiers de data sur lequel je veux faire un grep
les fichiers sont des log dans le nom est
data1.txt, data2.txt, ... data100.txt, data101.txt ... etc


si je fais un
>grep "string" * > result.txt

j'ai bien parsé tous les fichiers mais pas forcément dans l'ordre que je voudrais

comment faire en sorte que le grep commence par le fichier data1.txt, puis data2.txt ... etc



Il est sans doute plus simple de trier après, du moins si l'ordre des lignes dans le même fichier n'est pas important :


    grep string * | sort -n +0.4 > result.txt

 Sinon, tu peux faire, au choix :

  grep string $(ls | sort -n +0.4) > result.txt

 ou :

  ls | sort -n +0.4 | xargs grep string /dev/null > result.txt

la derniere cmd est la bonne ... merci xargs (j'ai + de 2000 fichiers,
les passer directement en args provoquent un "argument list too long)

une simple remarque
"ls" me provoque l'affichage des fichiers suivi de "*" ce qui met la
zone ...
(il y a moyen de virer ce "*" parasite ?)

echo * | sort -n +0.4 | xargs grep string > result.txt

fonctionne parfaitement

en tout cas, merci pour l'aide




-------------------------------------------------------------------- Les listes de diffusion occultes: <URL:http://www.CULTe.org/listes/>