특정 텍스트 문자열을 포함하는 모든 파일에 대해 전체 Linux 시스템을 스캔하는 방법을 찾으려고합니다. 명확히하기 위해 파일 이름이 아닌 파일 내에서 텍스트를 찾고 있습니다.
이 작업을 수행하는 방법을 찾을 때이 솔루션을 두 번 발견했습니다.
find / -type f -exec grep -H 'text-to-find-here' {} \;
그러나 작동하지 않습니다. 시스템의 모든 단일 파일을 표시하는 것 같습니다.
이것이 올바른 방법에 가깝습니까? 그렇지 않다면 어떻게해야합니까? 파일에서 텍스트 문자열을 찾는 기능은 내가하고있는 일부 프로그래밍 프로젝트에 매우 유용합니다.
-H
와 함께 -l
(그리고 아마도 grep
과 fgrep
). find
보다 고급 방식으로 사용할 특정 패턴의 이름을 가진 파일을 제외합니다 . find
그래도 사용법을 익히는 것이 가치가 있습니다 . 그냥 man find
.
find … -exec <cmd> +
보다 입력하기 쉽고 빠릅니다 find … -exec <cmd> \;
. <cmd>
많은 수의 파일 이름 인수를 허용하는 경우에만 작동합니다 . <cmd>
파이썬이나 루비 스크립트처럼 시작 시간이 느리면 실행 시간이 절약됩니다 .
grep "pattern" path/*.txt
.
단일 문자 와일드 카드로 해석한다는 점을 기억하십시오 . 내 조언은 항상 fgrep 또는 egrep을 사용하는 것입니다.