@clamp Ja, wenn Sie mit jeder Datei etwas anfangen möchten, leiten Sie diese Ausgabe einfach an einen anderen Befehl weiter.
Vielen Dank! Entschuldigung, aber ich bin ein Neuling in Unix. Ich habe versucht: tar tf graphics.tar.gz | find . --name *space*aber es heißtunkown predicate --name
Klemme
@clamp- 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'
Kevin
1
grep *foo*ist kein gültiger regulärer Ausdruck. gregversteht keine Globs, sondern reguläre Ausdrücke. Versuchen Sie es grep foostattdessen.
Alexios
3
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*'
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 Siegrep
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 esgrep 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
#
.quelle
Ich denke, es funktioniert ohne Pipe und Grep.
so was:
tar tvf archive.tar.gz "foo"
tar tvf archive.tar.gz "*.foo"
quelle