znajdź plik w archiwum tar.gz

12

Czy można użyć findpolecenia, aby przeszukiwać pliki w archiwum tar.gz również przy użyciu symboli wieloznacznych?

lubić

find archive.tar.gz --name *foo*
Zacisk
źródło

Odpowiedzi:

17

A może po prostu:

$ tar tf archive.tar.gz | grep foo
Chris Down
źródło
czy to nie tylko lista wszystkich plików?
zacisk
@ zacisk Tak, jeśli chcesz coś zrobić z każdym plikiem, po prostu potokuj wyjście do innego polecenia.
dzięki! przepraszam ale jestem nowicjuszem w unixie. próbowałem: tar tf graphics.tar.gz | find . --name *space*ale mówiunkown predicate --name
zacisk
findArgumenty @clamp wymagają tylko jednego myślnika, ale ponieważ jest to lista plików na stdin, grepzamiast tego chcesz użyć , podobnie jak przykładowy kod hesse. Spróbujtar tf graphics.tar.gz | grep 'space'
Kevin
1
grep *foo*nie jest prawidłowym wyrażeniem regularnym. gregnie rozumie globów, rozumie wyrażenia regularne. Spróbuj grep foozamiast tego.
Alexios
3

Zamontuj archiwum jako katalog. Możesz to zrobić za pomocą systemu plików AVFS , który umożliwia dostęp do dowolnego archiwum jako katalogu, którego nazwa ma końcowy ciąg #.

mountavfs
cd ~/.avfs$PWD
find archive.tar.gz\# -name '*foo*'
Gilles „SO- przestań być zły”
źródło
nie działa dla gzip
van abel
@vanabel Plik gzip nie zawiera innych plików. To tylko jeden plik skompresowany. Więc nie ma „wnętrza” do przeszukania.
Gilles „SO- przestań być zły”
2

Myślę, że to działa bez fajki i grep.

lubię to: tar tvf archive.tar.gz "foo"

w ten sposób globusy również będą działać.

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

Saeed Sepehr
źródło