web-dev-qa-db-ja.com

Q:解凍の進行状況を表示する方法は?

大きなファイルを解凍するときに、進行状況、バー、またはパーセンテージを表示するにはどうすればよいですか?

'unzip zipfile.Zip'は進捗情報を表示しませんか?

5
JPX

他に何もインストールせずに、最も簡単な方法は、awkを使用して抽出または処理されるすべてのファイルにドットを印刷することです。

unzip -o source.Zip -d /destDirectory | awk 'BEGIN {ORS=" "} {print "."}'

大きなZipファイルの場合、次のように10番目または20番目のファイルごとにドットを印刷することを選択できます。

unzip -o source.Zip -d /destDirectory | awk 'BEGIN {ORS=" "} {if(NR%10==0)print "."}'

NR%10ピースの「10」を必要な増分に変更するだけです。

代わりに、pvコマンドをインストールすることもできます。これは、unzipではうまく機能しませんが、完全にひどいわけではない1つのライナービューを提供します。

Pvをインストールします。

Sudo apt install pv

Pvで解凍:

unzip -o source.Zip -d /destDirectory | pv -l >/dev/null

これは、次のような出力を示します。

28.2k 0:00:03 [9.36k/s] [        <=>                       ]

ただし、Zipファイルの処理方法のため、希望どおりの意味のある方法で進行状況バーを表示することはありません。

8
Scott

Zip/unzipの進行状況を表示する別の方法は、7Zipプログラムを使用することです。最新バージョン16.02(公開2016-05-21)では、進行状況がパーセンテージで表示されます。

バージョン16.02のp7Zipパッケージは、artuful/16.10のリリース以降、Ubutuntuリポジトリで利用可能です。古いUbuntuリリースには、リポジトリに進行状況インジケータのないp7Zipバージョン9.20.1しかありません。バイオニックリポジトリからUbuntu xenial/16.04にpzip 16.02バージョンを手動でインストールしましたが、他の依存関係(p7Zip、p7Zip-full、p7Zip-rar)はないようです。

7z x source.Zip -o/destDirectory

「-o」と宛先ディレクトリ名の間にスペースがあってはならないことに注意してください。

1
palto

そのための簡単なラッパーを作成できます。

function punzip {
   unzip $1 | pv -l -s $(unzip -Z -1 $1 | wc -l) > /dev/null;
}

そして、次のように使用します:

$ punzip file.Zip

アーカイブに小さなファイルがたくさんある場合に便利かもしれません。ただし、ファイルが大きい場合は、次のようなものを使用することをお勧めします。

for f in $(unzip -Z -1 file.Zip);
do
    unzip -o -c file.Zip $f \
    | pv -s $(unzip -Z file.Zip $f | awk '{print $4}') \
    > $f
done

個々のファイルごとに進行状況バーが表示されます。

1