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*

Jawaban:


17

Bagaimana kalau saja:

$ tar tf archive.tar.gz | grep foo

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

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"

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.