ファイルが複数のタルボールに存在するかどうかを見つけるための最速の方法は何ですか? [閉鎖]

ファイルが複数のタルボールに存在するかどうかを見つけるための最速の方法は何ですか? [閉鎖]

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_patterns3日連続で一致するアーカイブを先に見つけてから、そのmatching_pattern1アーカイブをすべて見てそれを含むファイルをmatching_pattern2出力したいと思います。tar

ベストアンサー1

Tarファイルにはディレクトリ(zipファイルなど)がないため、これはtar tf可能な唯一の作業です。

このコマンドを複数回実行する必要がある場合は、もちろん、ファイル内の各tarファイルの内容を一覧表示して検索できます。

tar tvf oneofthe.tar > oneofthe.tar.lst

検索を再実行する必要がある可能性が低い場合でも、これを行います。最初に検索を実行してから、出力で検索するのではなく(grepを使用するなど)、検索するのはほとんど遅くないからです。tar tf

おすすめ記事