이름에 특정 문자열이 포함된 파일을 검색하는 데 grep을 사용할 수 있습니까?

이름에 특정 문자열이 포함된 파일을 검색하는 데 grep을 사용할 수 있습니까?

내가 아는 한, grep내용에 문자열이 포함된 파일을 검색하는 데에만 사용할 수 있습니다.

이름에 문자열이 포함된 파일을 검색하는 데 사용할 수 있습니까? 맨페이지를 읽었지만 그렇게 생각하지 않습니다.

grep[gri:p] 또는 [grep](IPA 표기법)으로 도 발음되나요? 나는 전자를 읽었습니다.

답변1

당신은 다음을 찾고 있는 것 같습니다 find:

find . -type f -name "*foo*"

foo이름이 포함된 파일 이름은 현재 디렉터리와 하위 디렉터리에서 검색됩니다 .

find . -maxdepth 1 -type f -name "*foo*"

foo현재 디렉터리에 포함된 파일 이름만 찾습니다 .

답변2

find파일 이름 목록을 생성한 후 구문 분석하는 데 사용됩니다 grep.

find . | grep 'stack[oO0]verfl[oO0]w'

파일 이름 목록 자체가 파일인 파일 시스템이 없다면 혼자서 이 작업을 수행하는 방법을 모르겠습니다 grep.

답변3

재미를 위해 grep자체를 사용하여 현재 디렉터리에 (비어 있지 않은) 파일 이름을 생성하고, grep원하는 파일을 찾기 위해 다른 파일을 생성할 수 있습니다.

grep -l . * 2>/dev/null | grep 'your_pattern'

옵션을 제공하지 않고 디렉토리를 검색하도록 요청하면 불평을 하기 2>/dev/null때문에 이는 필수입니다.grep-r

경고 사항: 이름에 개행 문자가 포함된 파일에서는 제대로 작동하지 않으며 점(숨겨진) 파일과 빈 파일은 무시됩니다.find여기서는 이것이 올바른 접근 방식입니다.

답변4

귀하의 질문에 대답하자면, 아니오입니다. Grep은 파일 이름으로 검색할 수 없으며 제공된 텍스트 데이터만 검색할 수 있습니다. 따라서 기본적으로 2가지 옵션이 있습니다 grep.

사용자가 제공한 파일 목록을 검색한 다음 grep각 파일을 차례로 열어 찾도록 지시한 패턴을 찾거나 표준 입력을 통해 데이터 스트림을 공급할 수 있습니다.

두 경우 모두 grep입력 소스(STDIN 또는 파일) 주변의 "메타데이터"를 볼 수 없으며 해당 내용만 볼 수 있습니다.

관련 정보