현재 이 버전의 grep -rlw를 사용하고 있습니다.
grep -rlw . -e "string_to_search"
"string_to_search"가 포함된 전체 파일을 검색합니다.
7일이 넘지 않은 파일을 찾도록 수정하고 싶습니다.
어떻게 해야 합니까?
grep -rlw . -e "string_to_search" | find -mtime +7|print
이런 것이 효과가 있을까요?
답변1
나이에 따라 전달할 파일을 사용 find
하거나 찾아야 합니다 .zsh
grep
find
:find . -mtime -7 -type f -exec grep -lFw string_to_search {} +
zsh
:grep -lFw -- string_to_search **/*(D.m-7)
를 사용하면 파일 경로에 접두어를 추가하는 것을 zsh
방지 하고 정렬된 목록을 제공하지만, 이를 방지하기 위해 POSIX가 아닌 경우 (예: GNU 또는 호환) 가 필요함을 의미합니다 . 이 접근 방식 은 매개변수 + 환경 크기에 대한 시스템 제한에 도달할 수 있습니다. 이 문제를 해결하려면 자동 로드 기능을 사용하세요../
--
grep
grep
-
zsh
execve()
zargs
find
sort
, 및 의 GNU 구현을 사용하면 접두사를 피하고 목록을 정렬 xargs
할 수도 있습니다 ../
find . -mtime -7 -type f -printf '%P\0' |
sort -z |
xargs -r0 grep -lFw -- string_to_search
-mtime -7
그리고 m-7
수명(mtime 기준)이 7보다 작고 정수 일수로 반올림된 파일과 일치합니다(이 경우 하루는 86400 Unix 초의 기간입니다). 따라서 DST가 해당 시간 간격 내에 변경되지 않는 한 이는 일반적으로 파일이 지난 주에 마지막으로 수정된 이후 같은 시간(또는 미래의 같은 날)입니다.
-mtime +7
기간은 엄격히 7보다 크므로 8일(8 * 86400초) 이상 된 파일에 대해 작동합니다.