Grep里面有多个目录和压缩文件

时间:2013-05-02 19:52:50

标签: regex grep gzip

我有很多压缩文件,其中每个文件都包含目录中的json文件和txt文件。 我想在目录中的所有压缩文件中找到json文件的总数。

要钻取它,我有很多这样的目录 如何查找所有目录中所有压缩文件中的json文件总数?

2 个答案:

答案 0 :(得分:2)

通过find命令,您可以轻松遍历每个目录,并匹配命名模式,例如*.zip

当您浏览find返回的列表(此处for循环将会很好)时,您需要列出每个归档中的文件(您不必提取文件,这很好)当你列出文件时,你可以做一个简单的grep找到.json模式和输出到wc -l的管道,它会给你一个“行数” - 在这种情况下,它将代表.json个文件的数量。

在每次迭代中,您都会计算并将其添加到“总”计数中,然后可以输出。

扩展的样本将是:

total=0;
for file in `find . -name '*.zip'`; do
    count=`unzip -l $file | grep '.json' | wc -l`;
    total=`expr $total + $count`;
done;
echo "Total Json Files: $total";

此示例假设您使用zip归档文件。如果您使用tar之类的内容,则需要使用其文件列表参数(tar -t)。

答案 1 :(得分:1)

zgrep就像grep一样工作,但处理zip文件。在linux上它是一个shell包装器,在bsd和osx上是一个二进制文件。