grep -rlw 하지만 7일보다 오래된 파일에만 해당됩니까?

grep -rlw 하지만 7일보다 오래된 파일에만 해당됩니까?

현재 이 버전의 grep -rlw를 사용하고 있습니다.

grep -rlw . -e "string_to_search"

"string_to_search"가 포함된 전체 파일을 검색합니다.

7일이 넘지 않은 파일을 찾도록 수정하고 싶습니다.

어떻게 해야 합니까?

grep -rlw . -e "string_to_search" | find -mtime +7|print

이런 것이 효과가 있을까요?

답변1

나이에 따라 전달할 파일을 사용 find하거나 찾아야 합니다 .zshgrep

  • find:

    find . -mtime -7 -type f -exec grep -lFw string_to_search {} +
    
  • zsh:

    grep -lFw -- string_to_search **/*(D.m-7)
    

를 사용하면 파일 경로에 접두어를 추가하는 것을 zsh방지 하고 정렬된 목록을 제공하지만, 이를 방지하기 위해 POSIX가 아닌 경우 (예: GNU 또는 호환) 가 필요함을 의미합니다 . 이 접근 방식 은 매개변수 + 환경 크기에 대한 시스템 제한에 도달할 수 있습니다. 이 문제를 해결하려면 자동 로드 기능을 사용하세요../--grepgrep-zshexecve()zargs

findsort, 및 의 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초) 이상 된 파일에 대해 작동합니다.

관련 정보