【问题标题】:Linux unzip to a pipe and grep filenameLinux 解压到管道和 grep 文件名
【发布时间】: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


【解决方案1】:

你知道zgrep吗?您可以对一组压缩文件使用正则表达式,仅使用该一个命令。更多信息请查看man zgrep

【讨论】:

  • zgrep 读取 gzip 压缩文件,而不是 zip 存档。
猜你喜欢
  • 2012-08-17
  • 1970-01-01
  • 2012-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-27
  • 2015-12-14
相关资源
最近更新 更多