다음 명령을 실행할 때:
find loanwolf/ -name '*.html' -exec grep --color -rn 'loanwolf_tags' {} +
출력에 일부 파일이 제공되었습니다. 출력된 파일에서 새로운 단어를 검색하고 싶지만 grep
그런 작업에는 사용할 수 없는 것 같습니다. 내가 어떻게 그런 일을 할 수 있겠는가?
답변1
두 개의 grep
-exec
참 또는 거짓을 제공하므로
find .. -exec grep foo {} \; -exec grep bar {} \;
bar
찾을 수 없으면 파일이 검색 되지 않습니다 .foo
\;
올드 스쿨(탈출해야 함 ;
) +
이자 뉴 스쿨입니다.
답변2
결과를 얻으려면 다음과 같이 할 수 있습니다.
find loanwolf/. -type f -name '*.html' -exec grep -lHZ loanwolf_tags {} + |
xargs -r -0 grep -lH new_word
여기서 우리가 하는 일은 html 확장자를 가진 일반 파일을 보는 것입니다. 우리는 그 파일들을 grep에 입력하고 그 안에서 Loanwolf_tags 문자열을 찾고 있습니다. 이 옵션은 해당 문자열이 발견된 파일 이름을 표시하고 -l
파일 이름에 null이 추가되어 전달됩니다.xargs
\0
이러한 파일 이름을 가져와 xargs
널 문자로 분할하여 모든 형태의 파일 이름을 복구합니다. 그런 다음 xargs는 이러한 파일 이름을 가져와서 grep
new_word를 찾아 일치하는 파일 이름을 표시합니다.