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
find
Argumente nehmen nur einen Gedankenstrich ein, aber da es sich um eine Liste von Dateien auf stdin handelt, möchten Sie grep
stattdessen wie in Hesses Beispielcode verwenden. Versuchen Sietar tf graphics.tar.gz | grep 'space'
grep *foo*
ist kein gültiger regulärer Ausdruck. greg
versteht keine Globs, sondern reguläre Ausdrücke. Versuchen Sie es grep foo
stattdessen.
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"