이 패턴은 find를 통해 일치하는 부분에서 어디에 나타납니까?

이 패턴은 find를 통해 일치하는 부분에서 어디에 나타납니까?

맨페이지는 다음과 같이 find말합니다.

-이름

파일 이름 기준(선행 디렉터리가 제거된 디렉터리 경로)

$ find ~ -name bookmark | less

아무것도 반환하지 않지만

$ find ~ -name bookmarks | less
./.streamtuner/cache/bookmarks
./.config/zathura/bookmarks
./.elinks/bookmarks

세 가지 게임이 있습니다.

왜 첫 번째는 두 번째와 일치하지 않습니까?

파일 이름의 위치 에 관계없이 이름에 해당 내용이 포함된 파일을 찾으려면 bookmark어떻게 해야 합니까? 감사해요.bookmarkfind

답변1

주어진 패턴-name일치해야합니다모두기본 파일 이름. 이 모드의 동작은 다음 -name과 같이 정의됩니다.

현재 경로 이름의 기본 이름이 패턴과 일치하면 기본 경로가 true로 평가되어야 합니다.

즉, 전체 기본 이름을 다음과 비교할 때무늬당신은주었습니다. 패턴은 기본적으로 쉘 글로브와 유사하다고 생각할 수 있습니다. *, ?[...]패턴을 사용하는 경우 패턴의 시작과 끝이 문자열의 시작과 끝과 정렬됩니다.

따라서 귀하의 명령은 다음과 같습니다.

find ~ -name bookmarks

전체 파일 이름이므로 "bookmarks"라는 파일을 찾으세요. 단, 다음과 같습니다.

find ~ -name bookmark

패턴에 와일드카드가 없기 때문에 "bookmark"라는 파일만 검색됩니다.

bookmark이름이 지정된 파일을 일치시키려면 bookmarks다음을 사용할 수 있습니다.

find ~ -name 'bookmark*'

그러니 찾고 싶다면

파일 이름에서 북마크 위치에 관계없이 이름에 북마크가 포함된 파일

당신이 사용할 수있는:

find ~ -name '*bookmark*'

이름에 임의 개수의 문자가 포함되고 그 뒤에 bookmark, 임의 개수의 문자가 포함된 파일과 일치합니다.

답변2

-name명령의 인수에 대한 인수는 find명령줄의 파일/디렉터리 이름에 있는 와일드카드와 정확히 동일합니다. *는 임의의 문자열이고 ?는 임의의 문자입니다.

관련 정보