web-dev-qa-db-ja.com

すべてのファイルを個別にGZipする

すべてのファイルを個別にGZipするにはどうすればよいですか?

すべてのファイルを大きなtarに入れたくありません。

38
Tonio

gzip *を使用できます


注意:

  • これにより、各ファイルが個別に圧縮され、元のファイルが[〜#〜] delete [〜#〜]されます。
  • -k--keep)オプションを使用して、元のファイルを保持します。
  • シェルの制限によりファイルが大量にある場合、これは機能しない可能性があります
  • gzipを並行して実行するには 下記の@MarkSetchellの回答を参照
71

すべてのCPUコアを並行して使用する簡単で非常に速い答え:

parallel gzip ::: *

GNU Parallelは、CPUがより高速ではなくより多くのコアしか取得しないこの世界ではるかに使用する必要がある素晴らしいツールです。たくさんの例がありますが、10分で読むことができます... here

37
Mark Setchell

7年が経過した後も、この非常に支持されたコメントには独自の完全な答えはまだないので、私は今それを宣伝しています:

gzip -r .

これには、現在受け入れられている回答よりも2つの利点があります。サブディレクトリがある場合は再帰的に機能し、ファイル数が非常に多い場合はArgument list too longから失敗しません。

25
leekaiinthesky

すべてのファイルを再帰的にgzipしたい場合は、xargsにパイプされたfindを使用できます。

$ find . -type f -print0 | xargs -0r gzip
14
Buddy

ループを試す

$ for file in *; do gzip "$file"; done
7
Federico Giorgi

または、pigz(複数のプロセッサとコアで圧縮を並列化するgzipユーティリティ)がある場合

pigz *
2
itsmisterbrown