어떤 파일에 특정 단어가 포함되어 있는지 확인하려면 일부 파일을 grep해야합니다.
grep -l word *
다음으로 파일 목록을 grep하여 어떤 파일이 다른 단어를 포함하는지 확인해야합니다. 쉬운 방법은 아마도 스크립트를 작성하는 것이지만 작업 방법을 잘 모르겠습니다.
댓글
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 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
는 거의 아무도 사용하지 않는 이상하게도 개행 문자를 제외한 모든 작업에서 작동합니다.
grep
? GNUgrep
? Linux, Solaris, BSD를 사용하십니까?