GNU/Linux >> Linux の 問題 >  >> Linux

ディレクトリ内のすべての zip ファイルに専用のフォルダーを作成し、zip ファイルを抽出します

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 実際にアーカイブにあるものだけを抽出します。おそらく、シェル スクリプトよりも簡単な方法はありません。しかし sedawk 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 をインストールする必要があります。 .


Linux
  1. ubuntulinuxでtar.gzファイルとtar.bz2ファイルを作成して抽出します

  2. Linuxでファイルを圧縮および解凍する方法を学び、Zipマスターになる

  3. ディレクトリ内のすべてのファイルを解凍します

  1. ディレクトリとファイルの権限を変更するには

  2. 隠しファイルを除いて、ディレクトリのtarアーカイブを作成しますか?

  3. 百万のXMLファイルを含むディレクトリから複数のZipを作成するにはどうすればよいですか?

  1. フォルダとリストファイルをループしますか?

  2. Centosでファイル/フォルダを圧縮/解凍するにはどうすればよいですか?

  3. LinuxでZIPファイルを操作する