linux – 查找文件是否存在于多个tarball中的最快方法?

除了使用tar tf并根据我正在寻找的文件检查每个文件输出之外,还有更有效的方法吗?

这就是我现在这样做的方式,但它非常慢(大约有600-1000个档案适合search_patterns):

ARRAY=()
ARRAY[0]=/path/to/archives/*search_pattern1*
ARRAY[1]=/path/to/archives/*search_pattern2*
ARRAY[2]=/path/to/archives/*search_pattern3*

for f in ${ARRAY[@]}
do
    if [[ $f =~ "matching_pattern1" ]]; then
        if tar -tf "$f" | grep "matching_pattern2" ; then
            printf "%s\n" $f;
            exit 0;
        fi
    fi
done

对于它的价值,我的search_patterns是连续3天,我想首先找到与matching_pattern1匹配的档案,然后查看matches_pattern2的所有这些档案并输出包含它的tar文件.

解决方法:

Tar文件没有目录(例如zip文件)因此,执行tar tf是唯一可以做的事情.

如果你必须多次运行,那么当然你可以在文件中列出每个tar文件内容搜索

tar tvf oneofthe.tar > oneofthe.tar.lst

如果只有很小的机会重新运行搜索,我甚至会这样做,因为首先执行此操作然后搜索而不是搜索(例如使用grep)tar tf的输出并不慢

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...