modificado pela última vez com grep

0

Gostaria de fazer uma lista do stdout dos arquivos modificados nas últimas duas horas no. diretório usando o grep. Tem que ser automático (não posso perguntar ao usuário que horas são ou coisas semelhantes) e eu tenho que usar apenas expressões grep, não condicionais. Eu não sei mesmo que seja possível, mas estou muito curioso. Isso é o que eu fiz até agora:

#!/bin/bash

#redirect output to a file otherwise grep will read all as one line not giving a readable   output
ls -lrt > ls_out
date > date_extr

# extract hour from date. E interpret what follows as an extended regex. o print only what is matched. m 1 stop after one match
#I'll go back 2 hours
time_=$(date | grep -Eo [0-9]+?: | grep -Eom 1 [0-9]+?)
time_1=$[$time_-1]
time_2=$[$time_-2]

#grep day and month from the previous file "" to include spaces in date_
date_=$(grep -oE [0-9]+\ [A-Za-z]+\  date_extr)
grep "$date_" ls_out > ls_date

#match time as it is if it has 2 digits for example 11, 19, 21. \ number avoid matches as 19: if time_ is 9:
grep \ $time_:      ls_date
grep \ $time_1:     ls_date
grep \ $time_2:     ls_date

#match 09: if time_ output was 9:
grep 0$time_:      ls_date
grep 0$time_1:     ls_date
grep 0$time_2:     ls_date

#cleaning up
rm ls_out ls_date date_extr

Funciona bem, o único problema é que ele não lista os arquivos modificados no dia anterior se o script for executado às 00 ou 1:00

O problema é que ii deve grep a data e a saída de ls -lrt e pareço precisar de um if.

Caso você esteja perguntando o motivo desta pergunta, é o link onde eu a levo com algumas modificações: link . Pergunta número 7.

Obrigado pelo seu tempo

    
por Luigi Tiburzi 19.05.2012 / 16:07

1 resposta

3

Use find . -maxdepth 1 -mmin -120 . Se você absolutamente deve usar grep você pode grep para uma string vazia: grep -l '' $(find . -maxdepth 1 -mmin -120)

    
por 19.05.2012 / 17:25

Tags