72

コマンドラインから.tar.gzファイル内の非圧縮ファイルデータの合計サイズを抽出するにはどうすればよいですか?

4

7 に答える 7

72

これは、任意のファイル サイズで機能します。

zcat archive.tar.gz | wc -c

4Gb より小さいファイルの場合、 gzipで-lオプションを使用することもできます。

$ gzip -l compressed.tar.gz
     compressed        uncompressed  ratio uncompressed_name
            132               10240  99.1% compressed.tar
于 2010-04-30T12:15:31.710 に答える
41

これにより、抽出されたファイルの合計コンテンツ サイズが合計されます。

$ tar tzvf archive.tar.gz | sed 's/ \+/ /g' | cut -f3 -d' ' | sed '2,$s/^/+ /' | paste -sd' ' | bc

出力はバイト単位で与えられます。

説明:tar tzvfのような詳細な形式でアーカイブ内のファイルを一覧表示しますls -lsedファイルサイズフィールドをcut分離します。2 番目sedは、最初のサイズを除くすべてのサイズの前に + を置き、pasteそれらを連結して、 によって評価される合計式を与えbcます。

これにはメタデータが含まれていないため、ファイルを抽出するときにファイルが占めるディスク容量はさらに大きくなることに注意してください。非常に小さなファイルが多数ある場合は、何倍にもなる可能性があります。

于 2012-07-30T12:32:25.973 に答える
-2

tar ファイルは、gzip、bzip2、lzip、compress、lzma などの別のプログラムでフィルタリングされるまで、またはフィルタリングされない限り、解凍されます。tar ファイルのファイル サイズは、抽出されたファイルと同じで、おそらく 1kb 未満です。有効な tarball にするために追加されたヘッダー情報。

于 2011-06-06T09:02:38.490 に答える