특정 문자열이 포함된 홈 디렉터리에서 지난 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. -lsto 의 출력을 파이핑하면 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)

... 여기서 in **은 "일반 파일( )만 일치하지만 숨겨진 파일( ) 포함"을 의미하며, where 는 "지난 2분 이내에 수정됨"을 의미합니다..D(.Dmm-2).Dmm-2

관련 정보