게시된 이전 쿼리에 추가로 sh와 함께 find 사용 - 명령이 작동하지 않음
find . -type f -name '*FW*' -exec grep -iEq 'chmod.*archive|archive.*chmod' {} \; -ls
"archive" 또는 "chmod" 텍스트가 여러 줄에 있는 경우 이 cmd는 파일을 찾을 수 없습니다. 그러나 "chmod" 및 "archive" 텍스트가 같은 줄에 있으면 파일을 검색할 수 있습니다.
그래서 이 명령을 사용해 보았지만 원하는 o/p를 제공하지 못했습니다.
1> find . -type f -name '*FW*' -exec grep -iEq 'chmod.*' {} \; -ls -exec grep -iEq '.*archive.*' {} +
이 cmd가 원하는 o/p를 제공하지 않는 이유는 무엇입니까?
이 명령을 사용하면 예상한 대로 결과가 나오지만 "find: 'pcregrep'가 신호 11에 의해 종료되었습니다.'라는 오류로 인해 간헐적으로 실패합니다.
2> find . -type f -name '*FW*' -exec pcregrep -qM 'chmod.*(\n|.)*archive.*' {} \; -ls
오류로 인해 실패하는 이유는 무엇입니까?
답변1
질문의 두 번째 명령은 사용하는 테스트의 순서가 find
중요하기 때문에 올바른 출력을 제공하지 않습니다. chmod
다른 grep
명령이 실행되므로 이 명령은 문자열을 포함하는 파일에 대한 결과만 출력합니다.~ 후에 -ls
(그리고 출력을 생성하지 않습니다).
문자열 chmod
과 archive
.
find . -type f -name '*FW*' \
-exec grep -Fiq chmod {} \; \
-exec grep -Fiq archive {} \; -ls
이는 이름에 grep -Fiq chmod
있는 모든 파일을 호출한 다음 첫 번째 파일에서 일치하는 항목을 호출합니다. 두 번째 파일 도 무언가를 찾은 경우 해당 파일이 적용됩니다.FW
grep -Fiq archive
grep
grep
-ls