unzip file.zip -d xxx
ファイルをディレクトリ xxx に抽出し、そこにない場合は xxx を作成します。詳細については、man ページを確認してください。
以下の awk 行は仕事をするはずです:
ls *.zip|awk -F'.zip' '{print "unzip "$0" -d "$1}'|sh
テストを見る 以下、
注意 |sh
を削除しました 最後に、私のzipは偽のアーカイブであるため。ここでは、生成されたコマンド ラインを表示したいだけです。
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
「ここに抽出」は、unzip
の単なる機能です。 使用しているラッパー。 unzip
実際にアーカイブにあるものだけを抽出します。おそらく、シェル スクリプトよりも簡単な方法はありません。しかし sed
、 awk
POSIX準拠のシェルを使用している場合、これには必要ありません:
for f in *.zip; do unzip -d "${f%*.zip}" "$f"; done
(*
をエスケープしてはいけません またはパス名の展開は行われません。) ZIP アーカイブにディレクトリーが含まれている場合 (Eclipse アーカイブの場合など) に注意してください (常に eclipse/
が含まれています)。 )、あなたは ./eclipse*/eclipse/eclipse.ini
になります いかなる場合でも。 echo
を追加 unzip
より前 ドライランのために。
p7zip
、7zipのコマンドラインバージョンが仕事をします
7z x '*.zip' -o'*'
debian と ubuntu では、p7zip-full
をインストールする必要があります。 .