맨페이지는 다음과 같이 find
말합니다.
-이름
파일 이름 기준(선행 디렉터리가 제거된 디렉터리 경로)
$ find ~ -name bookmark | less
아무것도 반환하지 않지만
$ find ~ -name bookmarks | less
./.streamtuner/cache/bookmarks
./.config/zathura/bookmarks
./.elinks/bookmarks
세 가지 게임이 있습니다.
왜 첫 번째는 두 번째와 일치하지 않습니까?
파일 이름의 위치 에 관계없이 이름에 해당 내용이 포함된 파일을 찾으려면 bookmark
어떻게 해야 합니까? 감사해요.bookmark
find
답변1
주어진 패턴-name
일치해야합니다모두기본 파일 이름. 이 모드의 동작은 다음 -name
과 같이 정의됩니다.
현재 경로 이름의 기본 이름이 패턴과 일치하면 기본 경로가 true로 평가되어야 합니다.
즉, 전체 기본 이름을 다음과 비교할 때무늬당신은주었습니다. 패턴은 기본적으로 쉘 글로브와 유사하다고 생각할 수 있습니다. *
, ?
및 [...]
패턴을 사용하는 경우 패턴의 시작과 끝이 문자열의 시작과 끝과 정렬됩니다.
따라서 귀하의 명령은 다음과 같습니다.
find ~ -name bookmarks
전체 파일 이름이므로 "bookmarks"라는 파일을 찾으세요. 단, 다음과 같습니다.
find ~ -name bookmark
패턴에 와일드카드가 없기 때문에 "bookmark"라는 파일만 검색됩니다.
bookmark
이름이 지정된 파일을 일치시키려면 bookmarks
다음을 사용할 수 있습니다.
find ~ -name 'bookmark*'
그러니 찾고 싶다면
파일 이름에서 북마크 위치에 관계없이 이름에 북마크가 포함된 파일
당신이 사용할 수있는:
find ~ -name '*bookmark*'
이름에 임의 개수의 문자가 포함되고 그 뒤에 bookmark
, 임의 개수의 문자가 포함된 파일과 일치합니다.
답변2
-name
명령의 인수에 대한 인수는 find
명령줄의 파일/디렉터리 이름에 있는 와일드카드와 정확히 동일합니다. *는 임의의 문자열이고 ?는 임의의 문자입니다.