.log
텍스트가 포함 된 확장자를 가진 모든 파일을 검색한다고 가정 해 보겠습니다 abc
.
확장자가있는 파일을 검색하면 다음과 같이 표시됩니다 (참조 : https://unix.stackexchange.com/a/16140/38353 ).
find / -xdev -type f -print0 | xargs -0 grep -H "abc"
.log
확장자가있는 파일 만 검색하도록 어떻게 수정할 수 있습니까?
더 나은 명령을 보여 주면 더 행복 할 것입니다.
TL; DR
명령에 -iname "*.log"
뒤에 추가 /
하십시오 find
. 자세한 정보는 man 페이지를 참조하십시오.
더 자세한 답변
당면한 작업은 다음과 같습니다.
*.log
grep
각 파일별로 실행 하여 특정 문자열이 포함되어 있는지 확인합니다.stdout
이를 수행 할 수있는 방법의 예는 다음과 같습니다.
$ find /var/log -iname "*.log" -exec grep -l 'wlan' {} \+
본질적으로 세 가지가 있습니다.
find
파일을 찾고 구조 grep
의 파일 이름 목록별로 호출하는 작업을 수행하며 -exec ...{} \+
, 여기서는 {}
발견 된 모든 파일 이름으로 대체됩니다.-iname "*.log"
파일 이름의 대소 문자 구분 일치를 제공 할 수 있습니다.-exec . . .{} \+
앞에있는 모든 파일 목록과 함께 execve
생성 되는 하위 수준 함수를 호출합니다 grep -l
(대신 {}
).\+
위한 지정하는 옵션이다 execve
앞의 가능한 모든 파일로 팩 grep
(제한값에 의해 설정되는 ARG_MAX
변수에 특정이다 exec
및 우분투 있어요 2097152
의해 표시 될 수있는 getconf ARG_MAX
커맨드). 한계에 도달하면 exec
은 grep
인수로 압축 된 더 많은 파일 을 사용 하여에 대한 호출을 반복합니다 . 은 \
보장하기 위해 필요 +
에 인수로 해석 find
이 아닌 다른 쉘 명령한다.-l
일치하는 문자열에 옵션 또는 그렙 쇼 파일. -L
문자열이없는 파일과 일치합니다.이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다