zipファイル用のフォルダを作成してそれに展開する

zipファイルを選択して「ここで展開」を右クリックすると、zipファイル名のフォルダが作成され、zipファイルの内容全体が抽出されます。

しかし、私はシェルを介していくつかのzipファイルを変換したいと思います。 しかし、私がするとき

unzip filename.zip

"filename"
フォルダは作成されず、すべてのファイルがカレントディレクトリに展開されます。

私はパラメータを見てきましたが、そのようなパラメータはありません。 私もやった

for zipfile in *.zip; do mkdir $zipfile; unzip $zipfile -d $zipfile/; done

2. $ zipfileと4. $ zipfileの .zip
拡張子はsedで削除する必要があります。 私が行った場合

for zipfile in *.zip; do mkdir sed 's/.zip//i' $zipfile; unzip $zipfile -d sed 's/.zip//i' $zipfile/; done 

それは動作していません。

$ zipfile.zip
拡張子を正しく置き換えるにはどうすればよいですか?

シェルスクリプトより簡単な方法はありますか?

ベストアンサー

unzip file.zip -d xxx will extract files to
directory xxx, and xxx will be created if it is not there. You can
check the man page for details.

下のawk行は仕事をする必要があります:

ls *.zip|awk -F'.zip' '{print "unzip "$0" -d "$1}'|sh

下記の[テスト]、

note that I removed |sh at the
end, since my zips are fake archives; I just want to show the
generated command line here.

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

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です