Сжатие нескольких файлов по отдельности с помощью Gzip - PullRequest
27 голосов
/ 25 апреля 2009

У меня есть несколько каталогов, которые выглядят так:

dir1/
  |_foo.txt
  |_bar.txt
dir2/
  |_qux.txt
  |_bar.txt

Для каждого из этого каталога я хочу сжать файлы в нем в формате * .gz затем удалите несжатые. Итак, наконец мы надеемся получить что-то вроде этого:

 dir1/
   |_foo.gz
   |_bar.gz
 dir2/
   |_qux.gz
   |_bar.gz

Есть ли простой способ Unix сделать это?

Ответы [ 3 ]

39 голосов
/ 25 апреля 2009
gzip */*.txt

Но расширение для каждого файла будет .txt.gz, поскольку gzip использует его, чтобы узнать оригинальное имя файла.

10 голосов
/ 27 апреля 2009

Следующее будет работать, даже если у вас есть подкаталоги. Например. dir1 / dir2 /.../ foo.txt

find . -type f -name "*.txt" -exec gzip {} \;
8 голосов
/ 25 апреля 2009

gzip -r dir1 dir2

...