У меня есть файл размером 100 ГБ, и я хочу разделить на 100 файлов по 1 ГБ каждый (по разрыву строки)
например
split --bytes=1024M /path/to/input /path/to/output
Для 100 сгенерированных файлов я хочу применить gzip / zip к каждому из этих файлов.
Можно ли использовать одну команду?
--line-bytes=1024M
.Ответы:
Используйте "--filter":
split --bytes=1024M --filter='gzip > $FILE.gz' /path/to/input /path/to/output
источник
Однострочник с условным условием настолько близок, насколько это возможно.
gzip
будет выполняться только в случаеsplit
успеха из-за условного условия,&&
которое также находится междуcd
иsplit
гарантирует, чтоcd
оно также успешно выполнено. Обратите внимание, чтоsplit
иgzip
вывод в текущий каталог вместо возможности указать выходной каталог. Вы можете сделать каталог, если это необходимо:Чтобы собрать все это вместе:
источник
Использование этой команды с
-d
опцией позволяет вам генерировать числовые суффиксы.Сгенерированные файлы:
источник
Функция bash для сжатия на лету с помощью pigz
источник