Сначала я задал вопрос: Распакуйте файл, а затем отобразите его в консоли за один шаг
Это работает и мне очень помогло. (пожалуйста, прочитайте)
Теперь у меня есть вторая проблема. У меня нет ни одного zipped log file
, но у меня их много в разных папках, которые мне нужно найти в первую очередь. Файлы имеют одинаковые имена. Например:
/somedir/server1/log.gz
/somedir/server2/log.gz
/somedir/server3/log.gz
и так далее ...
Мне нужен способ:
- найти все файлы, например:
find /somedir/server* -type f -name log.gz
- распакуйте файлы, например:
gunzip -c log.gz
- использовать
grep
для содержимого файлов
Внимание! Все должно быть сделано за один шаг.
Я не могу сначала сохранить извлеченные файлы в файловой системе, потому что это файловая система только для чтения. Мне нужно как-то соединить, с помощью каналов, вывод одной команды со входом следующей.
Раньше файлы журналов были в текстовом формате (.txt), поэтому мне не пришлось сначала их разархивировать. В этом случае это было легко:
ех.
find /somedir/server* -type f -name log.txt | xargs grep "term"
Теперь мне нужно разобраться с заархивированными файлами. Это означает, что после того, как я найду файлы, мне нужно сначала как-то распаковать их, а затем отправить содержимое на grep
.
С одним файлом я делаю:
gunzip -p /somedir/server1/log.gz | grep term
Но для нескольких файлов я не знаю, как это сделать. Например, как передать выходные данные find
в gunzip
и в grep
?!
Также, если есть другой способ / «наилучшая практика», как это сделать, можно только приветствовать:)