어떤 파일에 특정 단어가 포함되어 있는지 확인하려면 일부 파일을 grep해야 합니다.
grep -l word *
다음으로, 이 파일 목록을 grep하여 어떤 파일에 다른 단어가 포함되어 있는지 확인해야 합니다. 가장 쉬운 방법은 아마도 스크립트를 작성하는 것이지만 어떻게 해야 할지 잘 모르겠습니다.
답변1
모든 파일 이름에 공백, 작은따옴표, 큰따옴표 또는 백슬래시 문자(또는 - 로 시작하는 GNU 문자 grep
)가 포함되어 있지 않다고 가정하면 다음을 수행할 수 있습니다.
grep -l word * | xargs grep word2
Xargs는 첫 번째 grep의 각 파일에 대해 두 번째 grep을 실행합니다.
GNU grep
/ xargs
또는 호환성을 사용하면 다음을 통해 더욱 안정적으로 만들 수 있습니다.
grep -lZ word ./* | xargs -r0 grep word2
Use는 인쇄 파일 이름을 NUL로 구분 -Z
하므로 grep
와 함께 사용할 수 있습니다 . xargs -0
첫 번째 옵션에서 아무것도 찾지 못하면 두 번째 -r
옵션을 실행하지 않아도 됩니다.xargs
grep
grep
답변2
답변3
특정 단어가 포함된 파일을 찾은 다음 다른 단어가 포함된 파일을 필터링해야 하는 경우 다음과 같은 일련의 명령을 사용할 수 있습니다.
grep word * | awk -F ':' '{print $1}'|uniq | xargs grep word2
grep word *
- "단어"를 포함하는 모든 파일이 표시되고 파일 이름이 목록의 첫 번째로 표시됩니다.awk -F ':' '{print $1}'
- 결과의 파일 이름만 인쇄합니다.uniq
- 파일 이름을 두 번 이상 인쇄하지 않도록 합니다.xargs grep word2
- 받은 파일 목록에서 다시 검색합니다.