4

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

为了深入了解,我有很多这样的目录。
如何找出所有目录中所有压缩文件中的 json 文件总数?

4

2 回答 2

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)。

于 2013-06-05T13:37:47.090 回答
1

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

于 2013-07-18T04:27:43.950 回答