index.php
"hello"라는 문자열이 포함된 모든 파일의 위치를 찾고 싶습니다.
감사해요.
답변1
grep
다음과 함께 사용 find
:
find /top-dir -type f -name index.php -exec grep -l 'hello' {} +
/top-dir
검색하려는 최상위 디렉토리의 경로는 어디에 있습니까?
를 사용하면 -type f
일반 파일만 살펴보고 find
이름 이 . -name index.php
인 파일로 검색을 제한합니다 index.php
.
-exec grep -l 'hello' {} +
발견된 파일에 대해 실행되고 패턴( )과 일치하는 모든 파일의 경로를 grep
출력합니다 . 'hello'
그것은 경로의 출력을 유발합니다 -l
.grep
마지막으로 +
각 find
통화마다 가능한 많은 파일이 제공됩니다 grep
. 이를 ';'
또는 로 변경하면 한 번에 하나의 파일이 호출 \;
되므로 grep
파일이 많으면 속도가 느려질 수 있습니다.
답변2
명령에서 grep
다음을 사용하십시오 find
.
find -type f -name "index.php" -exec grep -q 'hello' '{}' \; -exec echo '{}' \;
답변3
Bash 쉘을 사용하는 경우 하위 디렉토리에서 일치 globstar
하는 옵션을 활성화한 다음 정상적으로 사용하십시오.**
grep
shopt -s globstar
grep -l hello **/index.php
shopt -s globstar
(비활성화 옵션을 사용하지 않는 한 이 작업은 셸에서 한 번만 수행하면 됩니다 shopt -u globstar
.)
답변4
다른 두 가지 명령 방법 find
:
find -type f -name "index.php" -exec grep -l 'hello' {} \;
find -type f -name "index.php" -exec grep -q 'hello' {} \; -print