У меня есть список из нескольких тысяч файлов gzip (*.gz), через которые я хотел бы выполнить zgrep , но я хочу запускать его только для файлов с отметкой времени последнего изменения, внесенной вчера или позже (22.11.2012) и которые содержат строку "виджет" в своих именах файлов (фильтрация по ним уменьшает количество файлов до примерно 80).

Я не вижу аргументов меток времени или шаблонов файлов, которые я могу добавить в свою команду zgrep - есть идеи?

Например:

eijdij8484.gz modified last on 11/20/2012 <== dont zgrep
dj8j4848ju-widget-dj8d4dj48d.gz modified last on 11/20/2012 <== dont zgrep bc of timestamp
ijdijdijdjii.gz modified last on 11/23/2012 <== dont zgrep bc no "widget" in filename
3ijdidj4-widget-jd9idj48.gz modified last on 11/22/2012 <== zgrep!

Заранее спасибо!

1 ответ1

1

Нечто подобное может привести вас в правильном направлении.

#!/bin/bash
    cutoff="20121122"
    for i in `find . -type f -name "*widget*.gz"; do
        modDate="`stat -c %y $i | awk '{print $1}' | sed 's/-//g'`"
        if [ ${modDate} < ${cutoff} ]; then
            command here on $i
        fi
    done

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

Редактировать - это должно быть плавающим "вчера" относительно текущего дня? Или это сложная "22.11.12"?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .