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*

Odpowiedzi:


17

A może po prostu:

$ tar tf archive.tar.gz | grep foo

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*'

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"

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.