我有一堆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行,即无法阅读。有没有人有想法?
答案 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的出现次数 名称从标准输入读取。此外,不带引号的空白 不终止输入项目;相反,分隔符是 换行符。