temukan file di dalam arsip tar.gz

12

Apakah mungkin menggunakan findperintah sehingga mencari file dalam arsip tar.gz juga menggunakan wildcard?

Suka

find archive.tar.gz --name *foo*
penjepit
sumber

Jawaban:

17

Bagaimana kalau saja:

$ tar tf archive.tar.gz | grep foo
Chris Down
sumber
Bukankah itu hanya daftar semua file?
menjepit
@clamp Ya, jika Anda ingin melakukan sesuatu untuk setiap file, cukup pipa output itu ke perintah lain.
Terima kasih! maaf tapi saya seorang pemula di unix. saya mencoba: tar tf graphics.tar.gz | find . --name *space*tetapi dikatakanunkown predicate --name
penjepit
findArgumen @clamp hanya membutuhkan satu tanda hubung, tetapi karena ini adalah daftar file di stdin, Anda ingin menggunakan grep, seperti kode contoh hesse. Cobatar tf graphics.tar.gz | grep 'space'
Kevin
1
grep *foo*bukan ekspresi reguler yang valid. gregtidak mengerti gumpalan, ia mengerti ekspresi reguler. Coba grep foosaja.
Alexios
3

Pasang arsip sebagai direktori. Anda dapat melakukannya dengan sistem file AVFS , yang memungkinkan Anda untuk mengakses arsip apa pun sebagai direktori yang namanya memiliki trailing #.

mountavfs
cd ~/.avfs$PWD
find archive.tar.gz\# -name '*foo*'
Gilles 'SANGAT berhenti menjadi jahat'
sumber
tidak bekerja untuk gzip
van abel
@vanabel File gzip tidak mengandung file lain. Hanya satu file, terkompresi. Jadi tidak ada "dalam" untuk mencari.
Gilles 'SO-stop being evil'
1

Saya pikir itu berfungsi tanpa pipa dan grep.

seperti ini: tar tvf archive.tar.gz "foo"

seperti ini, gumpalan juga akan berfungsi.

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

Saeed Sepehr
sumber