tar.gzアーカイブ内でファイルを見つける


12

findコマンドを使用して、ワイルドカードを使用してtar.gzアーカイブ内のファイルを検索することは可能ですか?

お気に入り

find archive.tar.gz --name *foo*

回答:


17

どうですか:

$ tar tf archive.tar.gz | grep foo

それはすべてのファイルをリストするだけではありませんか?
クランプ

@clampはい、各ファイルに何かをしたい場合は、その出力を別のコマンドにパイプするだけです。

ありがとう!すみませんが、Unixの初心者です。私が試した:tar tf graphics.tar.gz | find . --name *space*しかしそれは言うunkown predicate --name
クランプ

@clamp find引数はダッシュを1つだけ取りますが、これはstdin上のファイルのリストgrepなので、代わりにhesseのサンプルコードのように使用する必要があります。試してくださいtar tf graphics.tar.gz | grep 'space'
ケビン

1
grep *foo*有効な正規表現ではありません。gregglobを理解せず、正規表現を理解します。grep foo代わりに試してください。
アレクシオス

3

アーカイブをディレクトリとしてマウントします。あなたがそれを行うことができAVFSのあなたは、名前の末尾を持つディレクトリとして任意のアーカイブにアクセスすることを可能にするファイルシステム、#

mountavfs
cd ~/.avfs$PWD
find archive.tar.gz\# -name '*foo*'

gzipでは機能しません
van

@vanabel gzipファイルには他のファイルは含まれません。圧縮された1つのファイルです。だから、中に検索するための「内部」はありません。
ジル「SO-停止ビーイングの悪」

1

パイプとgrepなしで動作すると思います。

このような: tar tvf archive.tar.gz "foo"

このように、グロブも機能します。

tar tvf archive.tar.gz "*.foo"

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.