На самом деле, это реальная рабочая задача: запаковать DOCX (который, как мы помним, есть солянка из XML внутри ZIP) в ZIP. Так просит заказчик. У него там бизнес-процессы и всё такое.
Использую консольную утилиту zip v 3.0. Если файлов 2 или больше, пусть даже все - в DOCX, она их послушно сжимает.
Но если файл один, утилита ругается: nothing to do! Создать каталог и положить DOCX в него - не помогает.
Сообразил такой костыль:
touch dummy
zip -j archive.zip dummy document.docx
zip archive.zip -d dummy
Может быть, кто-то знает более прямой путь, нежели городить очередную функцию в .bashrc
? man zip
читал.
Работают пайпы, но тогда файл в архиве получается безымянный. Решение формально корректное, но непрактичное.