2009-11-24 74 views

回答

51

您可以使用gzip *


注:

  • 這將單獨壓縮每個文件和DELETE原件。
  • 使用-k--keep)選項保留原始文件。如果你有文件數量龐大,由於外殼
  • 的限制
  • 這可能不起作用並行see @MarkSetchell's answer below運行的gzip
2

嘗試循環

$ for file in *; do gzip "$file"; done 
13

如果你想給gzip每個文件遞歸,你可以使用發現管道輸送到xargs的:

$ find . -type f -print0 | xargs -0r gzip 
+10

不需要find + xargs。 Gzip可以處理遞歸本身:'gzip -9r .' – Idelic

+2

一如既往,'find。 -type f -print0 | xargs -0r gzip'更好。 – musiphil

+1

對於'gzip *'的等價物,您可能還需要''find'中的'-maxdepth 1'。 – musiphil

6

容易和非常快的答案,將使用所有的CPU內核並行:

parallel gzip ::: * 
+0

呃,這個答案需要更多upvotes! – zx8754

+1

@ zx8754 ** GNU Parallel **是一款非常棒的工具,應該在這個世界上應用得更多,因爲CPU只會獲得更多的內核而不是更快的速度。有大量的例子,我們都會做得很好,花10分鐘閱讀... https://www.gnu.org/software/parallel/parallel_tutorial.html –

+0

知道平行,但不要忘記使用它!冉接受的答案,然後滾動下來看到你的答案...保存了很多小時!也許一個好主意,讓你的評論編輯你的答案? – zx8754

7

七年後,這個高度評價的評論仍然沒有自己全面的答案,所以我現在推廣它:

gzip -r .

與目前接受的答案相比,它有兩個優點:如果存在任何子目錄,它將遞歸地工作,如果文件數量非常大,它將不會從Argument list too long失敗。