Saya ingin memindai hard drive saya untuk semua koleksi file terkompresi seperti zip, gzip, bzip, dan lainnya dan memiliki konten yang dicari untuk jenis file tertentu (seperti gambar). Anti-virus lakukan, jadi saya percaya harus ada jalan.
10
foo
tetapi tidakfoo.png
.Jawaban:
Pendekatan yang paling sederhana adalah dengan mendaftar isi arsip dan mencari file dari ekstensi yang relevan. Misalnya, dengan
zip
file:The
-sf
pilihan memberitahuzip
ke dalam daftar file yang terdapat dalam arsip. Kemudian,grep
akan mencari.png
atau.jpg
yang ada di akhir baris ($
). The-E
memungkinkan diperpanjang ekspresi reguler, sehingga kita dapat menggunakan|
sebagai OR dan-i
membuat kasus pencocokan tidak sensitif.Namun, setiap alat arsip memiliki perintah berbeda untuk membuat daftar konten. Saya telah menulis sebuah skrip yang dapat menangani sebagian besar yang lebih populer. Jika Anda menyimpan skrip itu sebagai
list_compressed.sh
, Anda dapat menjalankan:Itu akan menunjukkan kepada Anda tipe gambar yang paling umum. Perhatikan bahwa pendekatan ini mengasumsikan bahwa tipe file dapat ditentukan oleh ekstensi file. Itu tidak akan menemukan file gambar yang tidak memiliki ekstensi dan itu tidak akan mengenali file dengan ekstensi yang salah. Tidak ada cara untuk mengatasinya tanpa benar-benar mengekstraksi file dari arsip dan menjalankannya
file
masing-masing.Jika Anda ingin menemukan semua arsip yang berisi file gambar di hard drive Anda, gabungkan yang di atas dengan
find
:Perintah find akan mencari semua
.gz
,.tgz
atau.zip
file (Anda dapat menambahkan ekstensi sebanyak yang Anda suka), yang kemudian melewati skrip saya. The-q
Menekan grep output normal, tidak ada yang akan dicetak. The&& echo
akan mencetak nama arsip hanya jikagrep
berhasil.sumber
-name
untuk-iname
. Namun, ada sedikit gunanya, banyak program kompresi (gzip, misalnya) membutuhkan ekstensi spesifik.GZ
tidak akan bekerjaTidak semaju terdon, tetapi ini akan berhasil:
Simpan kode berikut, dalam folder tempat semua kode Anda berada, seperti
finda.sh
, atau nama lain yang Anda inginkan:Kemudian dalam direktori semua arsip Anda berada, jalankan dan inilah hasilnya:
sumber
*.*
hanya akan mencocokkan file dengan ekstensi. Selain itu, ini akan mencantumkan semua file di semua arsip, Anda tidak menguji untuk jenis file apa pun.