이렇게 하면 "Dropnot"의 다양한 하위 디렉터리에서 많은 수의 파일을 찾을 수 있습니다.
$ locate Dropnot
내가 찾을 수 있습니다오직디렉토리 위치는 locate
? ("Dropnot"이 위치한 디렉토리)
따라서 Dropnot
에 있는 경우 /home/me/
이것이 반환되는 유일한 항목입니다.
그렇다면 가장 쉽고 짧은 방법은 무엇입니까?
출력을 파이핑하여 찾는 것보다 플래그나 기호를 살펴보는 것이 더 낫겠지만 저는 무엇이든 선택하겠습니다.
줄 끝을 나타내는 일종의 Dropnot$이 있을까요? (그러나 그것은 작동하지 않았습니다).
답변1
나는 mlocate
그것을 설치했다. 기본적으로 RedHat에서 배포하므로 Fedora, RHEL, CentOS에서 실행됩니다. ~에서man locate
-b, --basename
Match only against the file name portion of the path name, ie., the
directory names will be excluded from the match (but still printed).
This does not speed up the search, but can suppress uninteresting matches.
따라서 실행하면 locate -b '/Dropknot'
해당 문자열이 있는 파일이나 디렉터리만 보고됩니다.
답변2
선택한 파일 형식(예: 디렉터리)을 찾는 옵션 은 없지만 locate
질문에 있는 구문을 사용할 수 Dropnot$
있습니다 Dropnot
.-e
이 경우 다음을 사용해야 합니다.
locate -e Dropnot$
사용 중인 버전의 위치를 지정하는 것이 매우 중요합니다. 내 시스템(Gentoo Linux)에는 보안 위치가 있습니다:
$ locate --version
Secure Locate 3.1 - Released March 7, 2006
답변에는 --basename
옵션이 없습니다 uther
. 이 옵션은 findutils 패키지의 GNU Locate에서 제공됩니다.
$ ./locate --version
locate (GNU findutils) 4.4.2
GNU Locate와 함께 regexp를 사용하려면 -r
스위치를 사용해야 합니다 -e
.
답변3
GNU 위치 지정 사용(다른 위치 지정 구현은 다를 수 있음):
locate '*/Dropnot'
locate Dropnot | grep '/Dropnot$'
인수에 와일드카드 문자가 없으면 locate
지정된 검색어가 하위 문자열로 포함된 경로를 찾습니다. 인수가 하나 이상의 와일드카드 문자를 포함하는 쉘 패턴인 경우 locate
정확히 일치하는 항목을 찾습니다 . /Dropnot
마지막에 출력을 원하지 않는 경우 :
locate -0 '*/Dropnot' | xargs -0 -n1 dirname
locate Dropnot | sed -n 's:/Dropnot$::p'
답변4
RedHat을 사용하는 경우 Secure Locate 대신 mlocate가 설치되어 있을 수 있습니다. 이 경우 -e 옵션 없이 -r 또는 --regexp를 사용하여 기본 정규식을 사용하여 검색해야 합니다.