GNU/Linux >> Belajar Linux >  >> Linux

Bash loop unzip skrip file yang diberi kata sandi

Jika Anda tidak memiliki dan tidak dapat menginstal zipinfo untuk alasan apa pun, Anda dapat menirunya dengan menggunakan unzip dengan -Z pilihan. Untuk membuat daftar isi zip gunakan unzip -Z1 :

pw="$(unzip -Z1 file1.zip | cut -f1 -d'.')" 
unzip -P "$pw" file1.zip

Masukkan ke dalam satu lingkaran:

zipfile="file1.zip"
while unzip -Z1 "$zipfile" | head -n1 | grep "\.zip$"; do
    next_zipfile="$(unzip -Z1 "$zipfile" | head -n1)"
    unzip -P "${next_zipfile%.*}" "$zipfile"
    zipfile="$next_zipfile"
done

atau fungsi rekursif:

unzip_all() {
    zipfile="$1"
    next_zipfile="$(unzip -Z1 "$zipfile" | head -n1)"
    if echo "$next_zipfile" | grep "\.zip$"; then
        unzip -P "${next_zipfile%%.*}" "$zipfile"
        unzip_all "$next_zipfile"
    fi
}
unzip_all "file1.zip"

-Z zipinfo(1) mode. Jika opsi pertama pada baris perintah adalah -Z, opsi yang tersisa dianggap sebagai opsi zipinfo(1). Lihat halaman manual yang sesuai untuk deskripsi opsi ini.

-1 :daftar nama file saja, satu per baris. Opsi ini mengecualikan yang lainnya; header, trailer, dan komentar zipfile tidak pernah dicetak. Ini dimaksudkan untuk digunakan dalam skrip shell Unix.


Tanyakan zipinfo untuk nama file yang tercantum dalam file zip, lalu ambil untuk kata sandi. Gunakan kata sandi itu untuk mengekstrak file:

pw=$(zipinfo -1 file1.zip | cut -d. -f1)
unzip -P "$pw" file1.zip

Perhatikan bahwa tandai ke zipinfo adalah satu bukan ell .

Meminjam secara bebas dari jawaban Gilles untuk pertanyaan serupa, inilah bash loop yang akan mengekstrak file zip bersarang yang dilindungi kata sandi hingga tidak ada lagi file zip:

shopt -s nullglob
while set -- *.zip; [ $# -eq 1 ]
do 
  unzippw "$1" && rm -- "$1"
done

Di mana saya telah mendefinisikan fungsi unzippw sebagai pembungkus untuk zipinfo dan unzip perintah di atas:

unzippw ()
{
    local pw=$(zipinfo -1 "$1" | cut -d. -f1)
    unzip -P "$pw" "$1"
}

Linux
  1. Bash Script:Periksa Apakah File Adalah File Teks?

  2. Menjalankan File Skrip Melalui Ssh Melalui Sudo?

  3. Bagaimana Cara Memeriksa Substring Di Shell Script Bash?

  1. Unzip Mengira File Zip Adalah Bom Zip?

  2. Bagaimana cara menyorot skrip Bash di Vim?

  3. Skrip Bash:juru bahasa yang buruk

  1. Bisakah Skrip Bash Dihubungkan ke File?

  2. Cara memasukkan file dalam skrip bash shell

  3. Cara grep untuk unicode � dalam skrip bash