~에서https://unix.stackexchange.com/a/81379/674
-path
시작 경로를 (재)정의하지 마세요. 현재 검사 대상의 시작 경로와 상대 경로의 조합을 말합니다."시작 경로"는 다음의 매개변수를 의미합니까
path
?find
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]
"현재 확인된 개체의 시작 경로와 상대 경로의 조합"이란 무엇을 의미합니까?
src
예를 들어, 이 기능을 사용하면 수준에 상관없이 하위 디렉터리의 모든 파일을 찾을 수 있습니다 .src
"레벨에 관계없이 하위 디렉터리의 모든 파일 찾기" 는 어떻게 수행됩니까?"/ 또는 .를 특별히 처리하지 마십시오"는
*
파일 이름(확장자 포함)과 하위 디렉터리가 모두 일치할 수 있음[...]/file*
을 의미합니다/file.txt
./files/foo.bar
"특별 대우 없음/또는"이 언급되지 않았
*
으므로 "특별 대우 없음/또는"은 에만 적용됩니까*
?
답변1
예, "시작 경로"는
find
명령 시작 부분, 옵션 뒤, 표현식 앞에 나타나는 디렉터리 이름 중 하나입니다. 나는 당신이 링크한 질문을 OP가 둘 사이의 차이점에 대해 혼동하고 있음을 나타내는 것으로 해석합니다.find /etc ...
그리고
find -path /etc ...
-
"현재 검사 대상의 시작 경로와 상대 경로의 조합을 말합니다."
이 답변의 작성자는 , 및 파일 이
tools/crowbar
포함된 이라는 디렉토리가 있다고 상상합니다 . 당신이 말하는 경우drink
food
foolishness
wisdom
find tools/crowbar -path "*bar/foo*"
합계는 찾을 수 있지만 다른 두 개는 찾을 수 없습니다.
tools/crowbar/food
tools/crowbar/foolishness
-
나는 lcd047에 동의합니다. 즉, 다음과 같은 디렉터리 구조를 가지고 있다면
. ├────고양이 │ ├────개 │ │ └────개집 │ └────택 │ └────src ├────목적지 ├────오리지널 │ ├────레시피 │ └────src └────출처
그 다음에
find . -path "*/src/*"
src
cat
,cat/dog
,cat/dog/kennel
,cat/tac
,dest
또는original
의 콘텐츠를 보고하지 않고 세 폴더 모두(및 모든 하위 디렉터리)에서 콘텐츠를 찾습니다original/recipe
.문장의 일부만 골라서 개별적으로 의미가 있다고 기대하는 것보다 전체 단락을 읽는 것이 도움이 됩니다.
-path
테스트 중 토론찾기(1)설명하다,-path pattern
- 파일 이름이 쉘 패턴과 일치합니다.무늬. 메타문자는 '
/
' 또는 ' '를 특별하게 처리하지 않습니다.
. 예를 들어 다음과 같습니다.찾다. -경로 "./sr*sc"
./src/misc
" "라는 디렉토리가 존재하는 경우 해당 디렉토리에 대한 항목을 인쇄합니다 . ...좋아, 같은 줄에 "파일 이름", "셸 패턴" 및 "메타 문자"가 표시되면 특수 패턴 문자가 있는 셸의 패턴 일치/경로 이름 확장을 생각해야 합니다.
*
,?
, 그리고[
...]
. ("메타 문자"는 기본적으로 "특수 문자"에 대한 $10 단어입니다.) 그러면 다음이*
포함된 예가 표시됩니다! 그래서 무슨 말인지 알아낼 수 있어야 합니다.그래서, 그게 무슨 말이에요? 예제를 살펴보세요:
sr*sc
matchsrc/misc
. 이는 일반적으로 match와 같은 것을 사용해야 하는 셸의 경로 이름 확장과 다릅니다. 그리고 아니요, 이는 단지 동일한 방식으로 적용되는 것이 아닙니다.sr*/*sc
src/misc
*
-path "sr????sc"
-path "sr[cim/][cim/][cim/][cim/]sc"
그들이 언급하지 않은 것은 쉘의 경로 이름 확장에서 일반적으로 (셸에서) 일치하지 않더라도
-path "*sr*sc"
일치할src/misc
뿐만 아니라.src/misc
일치 한다는 것입니다 .src/.misc
*sr*/*sc
*
.
.
답변2
find(1)
혼란을 피하기 위해 프로토타입을 다음과 같이 생각해야 합니다 .
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [dir...] [expression]
find(1)
파일을 찾으세요 dir
. expression
발견된 파일에 적용되는 테스트로 구성된 논리식입니다. -path
, -name
, 는 -type
그러한 테스트의 예입니다.
위의 내용은 기본적으로
-path
설정되지 않는다고 말하지만dir
해당 인수는 에 상대적으로 처리됩니다dir
.은 (는)
-path '*src*'
일치./src/foo/bar/test.c
하지만./foo/src/bar/test.c
은(는) 일치하지 않습니다./foo/bar/test.c
.이는
*
디렉터리 전체에서 일치하는 와일드카드입니다. 또한 이것을 "확장자"가 있는 파일과 일치하도록*
작성해야 하는 DOS/Windows 세계와 혼동 해서는 안 된다고 말합니다 .*.*
아니면 적어도 그것은 내 이해입니다.