在zip文件的递归目录中查找文件



我具有带有zip文件的整个目录结构。我想:

  1. 穿越整个目录结构,递归抓住所有zip文件
  2. 我想在这些zip文件之一中找到一个特定的文件"*mylostfile.ext"。

我尝试过的
1.我知道我可以轻松地递归列出文件:

find myLostfile -type f

2。我知道我可以在zip档案中列出文件:

unzip -ls myfilename.zip

如何在zip文件的目录结构中找到特定文件?

您可以使用for循环方法使用.zip文件的单级搜索(或 globstar中的bash 4中的递归)搜索:

for i in *.zip; do grep -iq "mylostfile" < <( unzip -l $i ) && echo $i; done

用于在Bash 4中进行递归搜索:

shopt -s globstar
for i in **/*.zip; do grep -iq "mylostfile" < <( unzip -l $i ) && echo $i; done

您可以使用xargs处理查找的输出,也可以执行以下操作:

find . -type f -name '*zip' -exec sh -c 'unzip -l "{}" | grep -q myLostfile' ; -print

将开始在.中搜索匹配*zip的文件,然后在每个文件上运行unzip -ls并搜索您的文件名。如果找到该文件名,它将打印与其匹配的zip文件的名称。

有些人建议使用ugrep搜索zip文件和tarballs。要查找包含mylostfile文件的ZIP文件,请将其指定为-g GLOG模式,例如:

ugrep -z -l -g'myLostfile' ''

使用空的正则态度模式''这是递归搜索工作目录的所有文件,包括mylostfile的任何zip,tar,cpio/pax档案。如果您只想搜索工作目录中的zip文件:

ugrep -z -l -g'myLostfile' '' *.zip

相关内容

  • 没有找到相关文章

最新更新