Antworten:
Wie wäre es einfach:
$ tar tf archive.tar.gz | grep foo
tar tf graphics.tar.gz | find . --name *space*aber es heißtunkown predicate --name
findArgumente nehmen nur einen Gedankenstrich ein, aber da es sich um eine Liste von Dateien auf stdin handelt, möchten Sie grepstattdessen wie in Hesses Beispielcode verwenden. Versuchen Sietar tf graphics.tar.gz | grep 'space'
grep *foo*ist kein gültiger regulärer Ausdruck. gregversteht keine Globs, sondern reguläre Ausdrücke. Versuchen Sie es grep foostattdessen.
Hängen Sie das Archiv als Verzeichnis ein. Sie können dies mit dem AVFS- Dateisystem tun, mit dem Sie auf jedes Archiv als Verzeichnis zugreifen können, dessen Name nachgestellt ist #.
mountavfs
cd ~/.avfs$PWD
find archive.tar.gz\# -name '*foo*'
Ich denke, es funktioniert ohne Pipe und Grep.
so was:
tar tvf archive.tar.gz "foo"
Auf diese Weise funktionieren auch Globs.
tar tvf archive.tar.gz "*.foo"