如何获取所有压缩文件的10行?

时间:2017-11-10 15:19:35

标签: bash unix zsh bz2

我有一堆M个文件,我想从中提取第一个N行(来自每个)。我的文件在BZ2中压缩。否则,做head -10 *就足够了。

例如:假设我想从我的所有文件中提取2个第一行(下面是A.txt,B.txt,C.txt)。

A.TXT:

1A
2A
3A
4A

B.txt:

1B

C.txt:

1C
2C

预期的结果应该是那样的(即包含这些行,而不是强制按顺序排列):

1A
2A
1B
1C
2C

我尝试了以下内容:

  • bzcat * | head -10为我提供了整个解压缩文件串的前10行,即输出不够。我在这里只有1A 2A
  • bzcat | head -10 *为我提供了每个压缩文件的前10行,即无法阅读。

有没有人有想法?

2 个答案:

答案 0 :(得分:2)

使用for循环:

for i in *; do bzcat "$i" | head -n10; done

find

find -type f -exec bash -c 'bzcat $1 | head -n10' _ {} \;

答案 1 :(得分:0)

使用xargs

find . -name "*" | xargs -I {} sh -c "bzcat {} | head -n10"

xargs -I replace-str:

  

在initial-arguments中替换replace-str的出现次数                 名称从标准输入读取。此外,不带引号的空白                 不终止输入项目;相反,分隔符是                 换行符。