如何计算目录中压缩文件中的行并打印每个文件的行数?

时间:2014-05-08 20:34:17

标签: linux

我在没有解压缩的情况下计算目录中几个文件中的行,并将结果除以如下所示:

gunzip -c *.fastq.gz | echo $((`wc -l`/4))

一切看起来都不错,只是它给了我所有线的总数。我想打印每个文件的行。谁能帮忙。我正在使用Darwin(Mac OSX)。谢谢。

2 个答案:

答案 0 :(得分:2)

只是把它变成一个小脚本?

#!/bin/bash
for i in *.fastq.gz
do
   echo "$i" $(gunzip -c $i | echo `wc -l`/4 | bc -l)
done

如果你想要一个单行:

for i in *.fastq.gz; do echo "$i" $(gunzip -c $i | echo `wc -l`/4 | bc -l); done

答案 1 :(得分:1)

gzip通常附带zcat(可能gzcat),基本上是gzip -dc。因此,此调用应适用于单个文件:

echo $(( $(zcat file.gz | wc -l) / 4 ))

如果由于某种原因你没有zcatgzip -dc就可以正常使用。

for循环中包装它以处理不同的文件应该相对简单......