'grep'コマンドと 'find'コマンドをパイプライン処理することで、特定の文字列について多数のファイルを検索できます。
今、私は約10個のZipファイルを持っており、それぞれが多くのテキストファイルをアーカイブしています。 Zipファイルを抽出せずに、それらすべてのZipファイルにアーカイブされたすべてのテキストファイルで文字列を検索する方法はありますか?
unzip -c \*.Zip | grep yourtext
Grepコマンドでいくつかの正規表現を使用して、文字列照合を微調整できます。
以下のコメントに基づくと、zgrep
の方が適しています。
Unzipパッケージに含まれているzipgrepコマンドを使用することもできます。例えば:
for z in *.Zip ; do zipgrep PATTERN $z |sed "s/^/$z: /" ; done
このコマンドは、アーカイブ内の一致したファイル名も提供します。
[〜#〜] avfs [〜#〜] または Fuse-Zip を使用して、アーカイブをディレクトリとしてマウントします。どちらも Fuse ファイルシステムです。
AVFSは、~/.avfs
内のファイルシステムのビューを提供します。ここで、すべてのアーカイブファイルには、同じ名前の関連付けられたディレクトリと、最後に#
があります。
mountavfs
grep -r PATTERN ~/.avfs/$PWD/*.Zip\#/
…
unmountavfs
Fuse-ZipはZipをディレクトリにマウントします。
for z in *.Zip; do mkdir "$z.d" && Fuse-Zip "$z" "$z.d"; done
grep -r PATTERN *.Zip.z/
…
fusermount -u *.Zip.d
rmdir *.Zip.d