微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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的输出并不慢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐