4

Кто-нибудь знает, как можно сжать несколько файлов GZIP?
У меня есть много файлов в папке, и мне нужно сжать их по отдельности.

На самом деле, я нашел способ сделать это. Двоичный файл командной строки GZIP выполняет свою работу.

Я использовал gzip -r dir .

Спасибо за ваши старания.

6 ответов6

4

Попробуйте следующее в powershell (после перехода в правильный каталог):

$files = get-childitem
foreach ($file in $files) {gzip $file}

Это позволит просмотреть все файлы в каталоге и сжать их все.

Редактировать: Если вы хотите сделать все файлы в дереве каталогов (то есть в папке и во всех ее подпапках), просто измените $files = get-childitem на $files = get-childitem -recurse

3

Я хотел бы использовать for цикла. Вы обеспокоены тем, что исполняемый файл будет загружен много раз? Это не должно быть много по сравнению со временем, затрачиваемым на сжатие.

2

Конечно, GZIP можно использовать для сжатия отдельных файлов ... но в большинстве случаев вы экономите место на диске. Файлы, занимающие 1 сектор, будут занимать 1-полный сектор дискового пространства, даже если файл меньше, чем размер сектора. (то есть размер сектора = 16 КБ, размер файла 8 КБ ... "сжатый" равен 5 КБ ... он по-прежнему занимает 16 КБ "дискового пространства"). Сила gzip становится более очевидной, когда вы объединяете все файлы в один файл. один файл (обычно с использованием tar), а затем сжимать единый архив. (в совокупности "архив" может взять все файлы и объединить их в один отдельный файл на диске ... который будет иметь меньше "мертвого пространства" между секторами)

Например:

tar -czf compressed_archive.tgz folder/*

tar -c создает архив, z использует сжатие gzip, а f записывает результаты в файл сжатый_архив.tgz. Вы также можете переключиться на использование сжатия bz2 (что во многих случаях лучше), просто переключив переключатель z на j .

Если вы хотите извлечь файлы из архива, вы можете просто сделать наоборот

tar -zxf compressed_archive.tgz

который x извлечет файлы, которые были z gzip'd, f из файла архива под названием compress_archive.tgz.

2

Просто используйте только gzip.

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

gzip dir/* -r

будет gzip каждый файл в каталоге /* (и подкаталогах).

1

Я обнаружил, что мне пришлось адаптировать метод soandos powershell, чтобы заставить его работать как положено (я бы добавил комментарий, но пока не позволил).

$files = get-childitem -recurse | % { $_.FullName }
foreach ($file in $files) {gzip $file}
1

Используйте 7-Zip для лучшего сжатия

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .