지난 2분 동안 마지막으로 수정된 특정 문자열을 포함하는 파일을 홈 디렉터리에서 검색하세요.

지난 2분 동안 마지막으로 수정된 특정 문자열을 포함하는 파일을 홈 디렉터리에서 검색하세요.

나는 특정 문자열을 포함하고 있으며 지난 2분 동안 수정된 파일을 찾기 위해 내 홈 디렉토리를 검색하고 있습니다. 나는 다음 명령을 사용해 보았습니다.

 find -type d -mmin -2 -ls | grep -Ril "mystring" 

작동하는 것처럼 보이지만 내부적으로 주어진 문자열을 포함하는 파일만 인쇄하며 2분 전에 마지막으로 수정되어 해당 문자열을 포함하는 파일은 인쇄하지 않습니다. 명령의 첫 번째 부분이 실행되지 않은 것 같습니다.

답변1

귀하의 제안에 따라 좋은 시도를 하셨습니다.

find -type d -mmin -2 -ls | grep -Ril "mystring"

이는 -type d디렉토리( )를 식별하지만 지난 2분 동안 수정된 파일( )은 식별하지 않습니다 -type f. 파이프 -ls로 연결된 출력은 grep일반적으로 생성된 파일 이름을 검색합니다 mystring. 그러나 이 경우 이 -R플래그는 동작을 변경 grep하고 파일 이름 목록을 무시하고 대신 현재 디렉터리와 모든 문서를 검색합니다.

그럼 질문을 두 부분으로 나누어 보겠습니다.

  1. 지난 2분 동안 마지막으로 수정된 파일을 홈 디렉터리에서 검색하세요.

    find ~ -type f -mmin -2
    
  2. [파일]에 특정 문자열이 포함되어 있습니다.

    grep -Fl 'certain String' {files...}
    

이제 그것들을 하나로 모아야 합니다. 1단계 {}에서 생성된 파일 이름의 자리 표시자 find이며 꼬리는 반복될 수 있음 +을 나타냅니다.{}자꾸, 즉 여러 파일 이름

    find ~ -type f -mmin -2 -exec grep -Fl 'certain String' {} +

grep다음으로 변경하면 명령이 실행 중인 echo grep내용이 표시됩니다 find. 이는 유용한 디버깅 기술이 될 수 있습니다.

    find ~ -type f -mmin -2 -exec echo grep -Fl 'certain String' {} +

예를 들어 및 에서 다양한 옵션이 무엇인지 알아보고 man find실행 해 보십시오. 그렇지 않으면 설정된 연습에서 아무 것도 배우지 못할 것입니다.man grep-F-lgrep -Fl

답변2

zsh셸 에서 :

grep -l -F -i 'string' ~/**/*(.Dmm-2)

...where는 **하위 디렉터리와 재귀적으로 일치합니다. 여기서 .Din은 (.Dmm-2)"일반 파일( .)만 일치하고 숨겨진 파일( D)은 일치하지 않음"을 의미하며 where mm-2는 "지난 2분 동안 수정됨"을 의미합니다.

관련 정보