搜索多个子目录和 zip 目录中的文件

搜索多个子目录和 zip 目录中的文件

我需要从 1000 个文件夹中提取超过 2k 个文件。问题是,每个文件夹的内部和内部都有一个压缩文件夹,还有另一个名为“fileholder”的文件夹,其中包含我需要获取的一些 temp.processed 文件类型。有什么方法可以搜索所有这些文件并将它们复制到另一个位置吗?或者我必须提取所有 zip 文件吗?

我跑过:

 find -type f -iname \*.PROCESSED

但这不会在压缩文件内搜索。有人能指出我正确的方向吗?

答案1

我会通过两次电话来完成find

  • 一种查找所有zip文件然后处理它们的方法
  • 另一个处理常规文件

这个有点麻烦,复杂的部分是awk调用。它处理的输出对unzip -l脚本不太友好。它搜索以数字开头的行(以消除标题),消除空行,最后.process以不区分大小写的方式进行匹配。

FINDDIR="."
for f in `find "$FINDDIR" -type f -iname '*.zip'`; do
  dir=`dirname "$f"`
  for p in `unzip -l sth.zip | awk '{if (match($1, /^[0-9]+$/) && $1 > 0 && match(tolower($4), /\.processed$/)) print $4}'`; do
    echo "$dir/$p"
done
find "$FINDDIR" -type f -iname '*.processed'

这无法处理递归zip,即如果一个 zip 存档位于另一个 zip 存档内。

相关内容