2011-05-10 2 views
2

У меня возникли проблемы с получением списка строк в связке gzipped файлов журнала доступа apache. Я хочу получить только список файлов журналов с номерами 1 и 2, затем grep через них и извлечь строки с соответствующим текстом.конкретный список файлов gziped журнала в zgrep

Первоначально я получил эту работу только для журналов доступа архивов нумеруются 1. «/ путь» текст был текст, я искал:

zgrep /pathname/ access_*.log.1.gz 

Поскольку Ls не поддерживает регулярные выражения, я придумал следующий, чтобы получить список из текущего каталога файлов, которые я хочу:

find . -maxdepth 1 -type f -regex '\./access.+\.log\.[1|2]\.gz' -printf '%P\n' 

find . -maxdepth 1 -type f -regex '\./access.+\.log\.[1|2]\.gz' | sed "s|^\./||" 

моей проблема сейчас принимает этот вывод списка файлов и zgrepping через файлы для возврата строки в этих файлах, которые соответствуют моему тексту. Я лаяю здесь неправильное дерево?

ответ

2

Try:

zgrep /pathname/ access_*.log.{1,2}.gz 

В качестве альтернативы, используйте найти -exec:

find . -maxdepth 1 -type f -regex '\./access.+\.log\.[1|2]\.gz' -exec zgrep /path/ {} \; 
+0

Проклятье. Ответ, имея дело с Linux, всегда проще, чем вы могли себе представить. Это сработало отлично, собака. Большое спасибо! – ogradyjd

+0

Я использовал первый, мимо. Я попробовал вторую команду (с exec), и это тоже сработало. Еще раз спасибо за ответ. – ogradyjd

0

У меня нет Apache-журналы, поэтому я использую подобное, но не идентичную картину:

ls /var/log/*.[12].gz 

Оболочка не поддерживает регулярное выражение, но группируется с [123] или [1-3], а также {1,2,3} и {1..3} или даже {o..w} и {066..091}.

Смежные вопросы