Saya sedang mengerjakan SunOS 5.10. Saya memiliki folder yang berisi sekitar 200 file zip. Setiap file zip hanya berisi satu file teks di dalamnya. Saya ingin mencari string tertentu di semua file teks di semua file zip.
Saya mencoba ini (yang mencari file teks dalam file zip yang berisi string "ORA-") tetapi tidak berhasil.
zipgrep ORA-1680 *.zip
Apa yang benar melakukannya tanpa membuka file zip?
Jawaban:
Secara umum tidak mungkin untuk mencari konten dalam file terkompresi tanpa mengompresnya dengan satu atau lain cara. Karena zipgrep hanyalah sebuah shellscript, membungkus unzip dan egrep itu sendiri, Anda sebaiknya melakukannya secara manual:
Jika Anda hanya perlu daftar file zip yang cocok, Anda dapat menggunakan sesuatu seperti:
Dengan cara ini Anda hanya melakukan dekompresi ke stdout (mis. Ke memori) alih-alih mendekompres file ke disk. Anda tentu saja dapat mencoba hanya
grep -a
file zip tetapi tergantung pada konten file dan pola Anda, Anda mungkin mendapatkan positif palsu dan / atau negatif palsu.sumber
unzip -c
mendekompres file ke stdout. Itu tidak menulis seluruh file terkompresi di tempat lain.unzip
digunakan-p
untuk streaming ke pipa!zipgrep
mengambil satu file. Untuk membuatnya berfungsi di banyak file, letakkan dalam satu lingkaran:sumber
for i in *.zip; do zipgrep TextToSearch $i && echo $i; done
Sistem file AVFS menyajikan tampilan sistem file di mana setiap file arsip
/path/to/foo.zip
dapat diakses sebagai direktori~/.avfs/path/to/foo.zip#
. Ini adalah sistem file FUSE , yang dapat Anda instal di Solaris. AVFS menyediakan akses hanya baca ke sebagian besar format file arsip.sumber