지난 2시간 동안 수정된 파일 목록을 stdout에 추가하고 싶습니다. 디렉토리에 grep을 사용하십시오. 자동이어야 하며(사용자에게 시간이나 그와 유사한 것을 물어볼 수 없음), 조건문이 아닌 grep을 사용해야 합니다. 이것이 내가 지금 하는 일이다:
#!/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
잘 작동합니다. 유일한 문제는 스크립트가 오전 00시 또는 오전 1시에 실행되면 전날 수정된 파일이 나열되지 않는다는 것입니다.
문제는 ii가 날짜와 ls -lrt의 출력을 grep해야 한다는 것입니다. if가 필요한 것 같습니다.
그렇기 때문에 이 질문을 하시는 경우, 몇 가지 수정 사항을 적용한 링크는 다음과 같습니다. http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_04_05.html. 질문 7.
답변1
사용 find . -maxdepth 1 -mmin -120
. 꼭 사용해야 한다면 grep
빈 문자열을 찾아보세요.grep -l '' $(find . -maxdepth 1 -mmin -120)