我有很多压缩文件,每个文件都包含一个目录中的 json 文件和 txt 文件。我想在目录中的所有压缩文件中找到 json 文件的总数。
为了深入了解,我有很多这样的目录。
如何找出所有目录中所有压缩文件中的 json 文件总数?
通过该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
)。
zgrep 像 grep 一样工作,但处理 zip 文件。在 linux 上它是一个 shell 包装器,在 bsd 和 osx 上它是一个二进制文件。