J'essaye de chercher une certaine chaîne dans beaucoup de fichiers csv gzipés, la chaîne se trouve à la première rangée et je pensais obtenir la première ligne de chaque fichier en combinant find, zcat et head. Mais je ne peux pas les amener à travailler ensemble.trouver des résultats redirigés vers zcat puis vers la tête
$find . -name "*.gz" -print | xargs zcat -f | head -1
20051114083300,1070074.00,0.00000000
xargs: zcat: terminated by signal 13
example file:
$zcat 113.gz | head
20050629171845,1069335.50,-1.00000000
20050629171930,1069315.00,-1.00000000
20050629172015,1069382.50,-1.00000000
.. and 2 milion rows like these ...
Bien que je résolu le problème en écrivant un script bash, itérer sur les fichiers et l'écriture dans un fichier temporaire, il serait bon de savoir ce que je fait de mal, comment le faire, et s'il pourrait y avoir d'autres façons de s'y prendre.
a fonctionné parfaitement, merci. Je ne savais pas que vous pourriez utiliser et lire comme ça, je m'en souviendrai. – furedde
Vous pouvez également utiliser: 'for f in * .gz; fais zcat $ f | tête -n 1; done' – arekolek
@arekolek: Ce qui n'est pas récursif sauf si vous utilisez 'shopt -s globstar; pour f dans **/*. gz', alors que 'find' est récursif sauf si vous le limitez avec' -maxdepth'. –