어떤 파일에 특정 단어가 포함되어 있는지 확인하려면 일부 파일을 grep해야합니다.

grep -l word * 

다음으로 파일 목록을 grep하여 어떤 파일이 다른 단어를 포함하는지 확인해야합니다. 쉬운 방법은 아마도 스크립트를 작성하는 것이지만 작업 방법을 잘 모르겠습니다.

댓글

  • grep? GNU grep? Linux, Solaris, BSD를 사용하십니까?
  • 나 ' m Linux 사용.

Answer

파일 이름에 공백, 작은 따옴표, 큰 따옴표 또는 백 슬래시 문자 (또는-GNU grep로 시작), 다음을 수행 할 수 있습니다.

grep -l word * | xargs grep word2 

Xargs 첫 번째 grep의 각 파일에 대해 두 번째 grep을 실행합니다.

GNU grep / xargs 또는 호환 가능, 다음과 같이 더 안정적으로 만들 수 있습니다.

grep -lZ word ./* | xargs -r0 grep word2 

-Z를 사용하면 grep xargs -0와 함께 사용할 수 있도록 NUL로 구분 된 파일 이름을 인쇄합니다. iv id = “ea711ff587에 대한 -r 옵션 “>

는 첫 번째 grep가 아무것도 찾지 못하는 경우 두 번째 grep가 실행되는 것을 방지합니다.

답변

grep -l word1 $(grep -l word2 *) 

또는 같은 줄에있는 두 단어 중 하나 일 수 있습니다.

grep -w "word1\|word2" * 

여기

답변

단어가 포함 된 파일을 찾은 다음 다른 단어가 포함 된 파일을 필터링해야하는 경우 다음과 같은 일련의 명령을 사용할 수 있습니다.

grep word * | awk -F ":" "{print $1}"|uniq | xargs grep word2 
  • grep word *– “단어”가 포함 된 모든 파일을 표시하고 파일 이름이 목록에서 첫 번째가됩니다.
  • awk -F ":" "{print $1}"-결과의 파일 이름 만 인쇄합니다.
  • uniq-파일 이름을 다음보다 더 많이 인쇄하지 않도록합니다. 한 번.
  • xargs grep word2-받은 파일 목록에서 다시 검색합니다.

댓글

  • @don_crissti 그러나 조각을 결합하면 grep -l word1 * | xargs -d'\n' grep -l word2는 거의 아무도 사용하지 않는 이상하게도 개행 문자를 제외한 모든 작업에서 작동합니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다