Подмена текста внутри сжатых файлов

У меня есть несколько файлов zip, каждый из которых имеет несколько текстовых файлов внутри них. Я хочу заменить все вхождения a в эти текстовые файлы на b и оставить их заархивированными с той же структурой.

Если бы я просто хотел найти вхождения a , я знаю, что могу использовать команду zgrep , но я также хочу выполнить замену строк. К сожалению, нет команды zsed .

У меня нет выбора, кроме как написать скрипт с циклом?

2 Solutions collect form web for “Подмена текста внутри сжатых файлов”

Если вы хотите изменить текст в файлах в zip-файле, тогда у вас нет выбора, кроме как извлечь их, отредактировать и повторно добавить.

Если вам нужно это сделать в большей части содержимого .zip (а не по количеству файлов, а всего сжатого количества), легче извлечь все в новый каталог, отредактировать соответствующие файлы и заархивировать все. Это, например, случай, когда редактирование всех .html файлов в .epub и оставление метаданных одинаково, так как метаданные с повторной заливкой занимают минимальное время по сравнению с остальными данными.

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

Установите плавкий предохранитель (доступный через менеджер пакетов во всех хороших дистрибутивах).

 mount_point=$(TMPDIR=$PWD mktemp -d) # Iterate over the .zip files in the current directory for z in *.zip; do fuse-zip "$z" "$mount_point" # At this point, the zip contents are available through the mount point find "$mount_point" -type f -exec sed -i 's/a/b/g' {} + fusermount -u "$mount_point" done rmdir "$mount_point" 

(Примечание: я предполагаю синтаксис GNU sed в этом примере.)

  • Сжимать zip-файлы с более высоким сжатием
  • Как перенаправить вывод программы в ZIP-файл?
  • Распаковать все несуществующие или более старые файлы из архива
  • Как исключить каталог при копировании файлов
  • Есть ли команда для перечисления сжатых размеров файлов для файлов в .zip-файле?
  • Извлечение одного файла из нескольких ZIP-файлов
  • синхронизировать два zip-архива (с минимальным вводом-выводом)?
  • Закрепить файл как подкоманду
  • Объединить zipfile: с scp: чтобы открыть удаленный zip с vim
  • Как перечислить файлы в zip без дополнительной информации в командной строке
  • Ошибка Ubuntu unzip: ошибка sysmalloc не выполнена
  • Linux и Unix - лучшая ОС в мире.