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)
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
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)