Como zgrep por padrão de arquivo e timestamp?

0

Eu tenho uma lista de vários arquivos de milhares de gzip ( *.gz ) que eu gostaria de zgrep , mas eu só quero executá-lo em arquivos com um último registro de data e hora modificado em ou depois de ontem (11 / 22/2012) e que contêm a string "widget" em seus nomes de arquivos (a filtragem reduz o número de arquivos para cerca de 80).

Eu não vejo nenhum argumento de timestamp ou padrão de arquivo que eu possa adicionar ao meu comando zgrep - alguma idéia?

Por exemplo:

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!

Obrigado antecipadamente!

    
por pnongrata 24.11.2012 / 00:56

1 resposta

1

Algo parecido com isso pode fazer você ir na direção certa.

#!/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

Esta foi uma rápida redação, porque minha esposa está esperando que eu saia de casa, então tente isso um pouco e vou tentar testá-la mais profundamente ainda esta noite.

Editar - Isso significa ser um "ontem" flutuante em relação ao dia atual? Ou é um disco "22/11/12"?

    
por 24.11.2012 / 01:12