unzip file.zip -d xxx
akan mengekstrak file ke direktori xxx, dan xxx akan dibuat jika tidak ada. Anda dapat memeriksa halaman manual untuk detailnya.
Baris awk di bawah ini harusnya berfungsi:
ls *.zip|awk -F'.zip' '{print "unzip "$0" -d "$1}'|sh
Lihat ujian di bawah,
catatan bahwa saya menghapus |sh
pada akhirnya, karena ritsleting saya adalah arsip palsu; Saya hanya ingin menunjukkan baris perintah yang dihasilkan di sini.
kent$ ls -l
total 0
-rw-r--r-- 1 kent kent 0 Nov 12 23:10 001.zip
-rw-r--r-- 1 kent kent 0 Nov 12 23:10 002.zip
-rw-r--r-- 1 kent kent 0 Nov 12 23:10 003.zip
-rw-r--r-- 1 kent kent 0 Nov 12 23:10 004.zip
-rw-r--r-- 1 kent kent 0 Nov 12 23:10 005.zip
-rw-r--r-- 1 kent kent 0 Nov 12 23:10 006.zip
-rw-r--r-- 1 kent kent 0 Nov 12 23:10 007.zip
kent$ ls *.zip|awk -F'.zip' '{print "unzip "$0" -d "$1}'
unzip 001.zip -d 001
unzip 002.zip -d 002
unzip 003.zip -d 003
unzip 004.zip -d 004
unzip 005.zip -d 005
unzip 006.zip -d 006
unzip 007.zip -d 007
"ekstrak di sini" hanyalah fitur dari unzip
apa pun pembungkus yang Anda gunakan. unzip
hanya akan mengekstrak apa yang sebenarnya ada di arsip. Mungkin tidak ada cara yang lebih sederhana daripada skrip shell. Tapi sed
, awk
dll. tidak diperlukan untuk ini jika Anda memiliki shell yang sesuai dengan POSIX:
for f in *.zip; do unzip -d "${f%*.zip}" "$f"; done
(Anda TIDAK HARUS melarikan diri dari *
atau perluasan pathname tidak akan terjadi.) Ketahuilah bahwa jika arsip ZIP berisi direktori, seperti arsip Eclipse (yang selalu berisi eclipse/
), Anda akan mendapatkan ./eclipse*/eclipse/eclipse.ini
dalam hal apapun. Tambahkan echo
sebelum unzip
untuk lari kering.
p7zip
, versi baris perintah 7zip melakukan tugasnya
7z x '*.zip' -o'*'
Di debian dan ubuntu, Anda harus menginstal p7zip-full
.