![ファイルが複数のタルボールに存在するかどうかを見つけるための最速の方法は何ですか? [閉鎖]](https://linux33.com/image/58343/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%8C%E8%A4%87%E6%95%B0%E3%81%AE%E3%82%BF%E3%83%AB%E3%83%9C%E3%83%BC%E3%83%AB%E3%81%AB%E5%AD%98%E5%9C%A8%E3%81%99%E3%82%8B%E3%81%8B%E3%81%A9%E3%81%86%E3%81%8B%E3%82%92%E8%A6%8B%E3%81%A4%E3%81%91%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AE%E6%9C%80%E9%80%9F%E3%81%AE%E6%96%B9%E6%B3%95%E3%81%AF%E4%BD%95%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E9%96%89%E9%8E%96%5D.png)
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
アーカイブをすべて見てそれを含むファイルをmatching_pattern2
出力したいと思います。tar
答え1
Tarファイルにはディレクトリ(zipファイルなど)がないため、これはtar tf
可能な唯一の作業です。
このコマンドを複数回実行する必要がある場合は、もちろん、ファイル内の各tarファイルの内容を一覧表示して検索できます。
tar tvf oneofthe.tar > oneofthe.tar.lst
検索を再実行する必要がある可能性が低い場合でも、これを行います。最初に検索を実行してから、出力で検索するのではなく(grepを使用するなど)、検索するのはほとんど遅くないからです。tar tf