Zcat несколько сжатых файлов в цикле for - PullRequest
0 голосов
/ 18 сентября 2018

Я довольно новичок в bash-скриптинге, и я искал здесь в stackoverflow ответ, который будет соответствовать тому, что я ищу, но не могу найти точное совпадение .. извинения, если на этот вопрос уже был дан ответ.

У меня есть несколько папок, в которых есть несколько сжатых файлов, некоторые из них имеют расширение gzip, некоторые не имеют расширения.

Единственный способ, которым я смог увидеть содержимое сжатого файла, это выполнить

zcat filename.gzip > filename

Моя цель - создать цикл for, который будет:

  1. zcat всех файлов и выводит его в новый файл и добавляет в конце идентификатор, что-то вроде "-read"
  2. удалить сжатый файл

Спасибо!

1 Ответ

0 голосов
/ 18 сентября 2018

Чтобы распаковать все файлы, которые gzip будет обрабатывать, используя find, basename и цикл while:

find . -type f | while read f; do
    set -e # You should probably always script with set -e
           # This will cause the subshell to stop on errors.
    zcat < "$f" > "$f-new" || continue
    rm "$f"
done

Это также должно обрабатывать любые возникающие странные кавычки.Цикл while будет работать в подоболочке, и set -e установит в нем опцию остановки при ошибке, чтобы при возникновении ошибки с zcat или rm он не продолжал вспахивать, уничтожая всев поле зрения.

...