找到通过管道传输到zcat然后到头的结果

fur*_*dde 11 unix bash pipe zcat

我正在尝试在很多gziped csv文件中搜索某个字符串,该字符串位于第一行,我的想法是通过组合find,zcat和head来获取每个文件的第一行.但我不能让他们一起工作.

$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 ...
Run Code Online (Sandbox Code Playgroud)

虽然我通过编写bash脚本,遍历文件并写入临时文件来解决问题,但知道我做错了什么,怎么做以及是否有其他方法可以解决问题会很棒.

Pau*_*ce. 7

你会发现这会起作用:

find . -name "*.gz" | while read -r file; do zcat -f "$file" | head -n 1; done
Run Code Online (Sandbox Code Playgroud)