마지막으로 grep을 사용하여 수정하십시오.

마지막으로 grep을 사용하여 수정하십시오.

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

관련 정보