【发布时间】:2021-09-11 23:31:08
【问题描述】:
我有一个 bash 脚本,我在其中循环遍历一组压缩文件名,并在循环内将每个压缩文件解压缩到管道并从解压缩文件中提取特定模式的文件名。比如:
while read line
do
matched=$((unzip -p $line | grep $regex))
...
done << "$zipfilelist"
我担心这是否是一种非常有效的方法,考虑到解压缩压缩文件会导致大量子(文件/目录)列表被推送到管道(内存)的情况。有没有更有效的方法来处理这个问题。
【问题讨论】:
-
管道尺寸有限。 (我见过 128 KiB。)如果它填满,作者会阻止。如果它变为空,阅读器将阻塞。
-
这可能是最好的方法。
-
zipgrep 或许值得一试。
标签: linux bash shell pipe unzip