(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/>