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

У меня есть несколько файлов 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-файлы с более высоким сжатием
  • Замещать несколько форматов звукового файла без дефляции
  • Извлечение файла Wordpress.zip на Linux-сервере
  • Я неоднократно застегиваю одну и ту же папку с файлами, но shasum продолжает меняться
  • распаковать вложенные .zip-файлы по сценарию оболочки
  • Zip не сжимает файлы при застегивании
  • Как я могу сделать zip, указав каталог?
  • Как происходит застежка созданного образа диска, делает меньше файлов, чем трубопроводов?
  • Как я рекурсивно grep через сжатые архивы?
  • Файл с zipped с помощью 7za нельзя распаковать с помощью утилиты zip
  • Linux и Unix - лучшая ОС в мире.