web-dev-qa-db-ja.com

アーカイブの内容も考慮してファイルを検索する方法はありますか?

(非常に古い)ファイルを見つけようとしていますが、そこからNASのどこかにあると確信しています。残念ながら、古いファイルのいくつかをtar.gz、Zip、または7zに保存しています。

これらのアーカイブのコンテンツを含むすべてのファイルとフォルダーを検索する方法はありますか?

おそらくfindまたはlocateにこれらのアーカイブを検討し、ディレクトリツリーをたどって中を見るように指示できますか?

2
kerner1000

次のように、特定の各アーカイブタイプ内を検索できます。

cd /dir/where/you/want/to/start/search
find . -iname '*.Zip' -exec unzip -l {} \; | grep 'file_pattern'
find . -iname '*.tar.gz' -exec tar tvf {} \; | grep 'file_pattern'
find . -iname '*.7z' -exec 7z l {} \; | grep 'file_pattern'

常に現在のディレクトリで検索を開始し、コマンドラインパラメーターとしてファイルマッチングパターン(正規表現を含むか、単にファイル名のすべてまたは一部である可能性がある)を受け入れることにより、その使用を簡素化できます。

実行可能パス(例:/ usr/local/bin)にスクリプト(例:「arcsearch」)を作成し、次の内容で実行可能にするために「chmod + x」することを確認します。

find . -iname $1
find . -iname '*.Zip' -exec unzip -l {} \; | grep $1
find . -iname '*.tar.gz' -exec tar tvf {} \; | grep $1
find . -iname '*.7z' -exec 7z l {} \; | grep $1

次に、次のように入力します。

arcfind whatever_you_want

「通常の」ファイルとアーカイブ内のファイルの両方の結果を吐き出します。

4
Charles Boling