Я извлекаю файл .odt(открытый офис) и делаю с ним некоторые манипуляции. А потом, когда я хочу вернуть файл обратно, у меня возникает проблема.

например, если я вхожу в каталог с распакованным файлом odt, и я делаю что-то вроде этого:

cd /dir/with/uziped/odt
zip -r ../test.odt .

Все работает отлично. Я получил действительный файл открытого офиса, и я могу работать с ним.

Но затем я пробую zip из не корневой папки odt У меня поврежден файл odt, после этой команды:

zip -r test.odt /dir/with/uziped/odt

Так что это не сработает.

«/dir/with/uziped/odt» включает пару папок и XML-файлы

ОБНОВЛЕНИЕ:
Основная проблема заключается в том, что если я попытаюсь использовать архиватор, а не из корневого каталога, он берет все каталоги в пути с помощью команды:

7z a -tzip tt.odt temp/*

Выход будет:

Compressing  temp/Configurations2/accelerator/current.xml      
Compressing  temp/META-INF/manifest.xml      
Compressing  temp/Thumbnails/thumbnail.png      
Compressing  temp/content.xml      
Compressing  temp/manifest.rdf      
Compressing  temp/meta.xml      
Compressing  temp/mimetype      
Compressing  temp/settings.xml      
Compressing  temp/styles.xml

но мне не нужно сжимать временную директорию. Мне нужно только добавить все файлы из этого каталога в новый архив, например так:

Compressing  Configurations2/accelerator/current.xml      
Compressing  META-INF/manifest.xml      
Compressing  Thumbnails/thumbnail.png      
Compressing  content.xml      
Compressing  manifest.rdf      
Compressing  meta.xml      
Compressing  mimetype      
Compressing  settings.xml      
Compressing  styles.xml 

1 ответ1

0

Потоковый ввод и вывод zip

zip также примет один дефис - качестве имени zip-файла, и в этом случае он запишет zip-файл в стандартный вывод, позволяя передать результат в другую программу.

Например, программа dd может записать стандартный вывод в файл в другом месте. В следующем примере dd записывает стандартный вывод в новый файл с именем test.zip (zip-архив), расположенный на рабочем столе пользователя Denis.

cd /dir/with/uzipped/odt
zip -r - . | dd of=/home/Denis/Desktop/test.zip  

Этого набирается of стендов для выходного файла. dd после одинарной тире текущая директория.

Преобразование zip-файла в odt

Поскольку файл .odt структурирован как файл .zip, вы можете просмотреть содержимое файла .odt, переименовав расширение файла в .zip, а затем извлекая файлы из архива zip. Если вы сохранили структуру каталогов исходного файла .odt, вы можете преобразовать файл .zip обратно в файл .odt после внесения в него изменений, переименовав расширение файла .zip обратно в .odt.

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