공부를 안 해도 늘 이런 고민이 있어요.
다른 디렉터리에서 시작점의 파일을 검색할 때 시작점의 전체 경로를 제공했지만 작동하지 않았습니다. 시작 디렉터리에 있고 시작 지점의 전체 경로를 제공하는 경우에도 동일한 일이 발생합니다.
find /path/from/start/. -path './anaconda3/*' -prune -o -name '*R' -print
마치 사탕이 들어 있는 것처럼 "Trim" 디렉터리로 직접 이동하세요.
내가 출발점에 있다면 처음부터 시작 .
하는 것이 좋습니다. 그렇지 않으면 find
내가 탈출하려는 경로가 잘리지 않습니다.
find . -path './anaconda3/*' -prune -o -name '*R' -print
일하다.
어쩌면 자세한 답변을 통해 이 문제를 해결할 수 있을 것입니다. 때로는 배우게 되지만 다음에 명령을 받게 되면 find
이전에 한 번도 해본 적이 없는 것과 같은 동일한 문제에 직면하게 될 것입니다. 매뉴얼 페이지의 이 장은 -path pattern
무언가를 말하려고 시도하지만 그것은 vogon에 있는 것 같고 바벨 피시는 없습니다.
답변1
-path
생성된 전체 경로 이름과 일치합니다 find
. 로 시작하면 경로 이름이 이것으로 시작됩니다. ( 필요하지 않고 복잡할 뿐임) .
로 시작하면 경로 이름이 로 시작됩니다 ./path/from/start
/.
/path/from/start
따라서 전체 경로를 일치시켜야 합니다.
find /path/from/start -path '/path/from/start/anaconda3/*' -prune -o -name '*R' -print
이 부분은 자체적으로 다듬어지기 때문에 마지막 부분 /path/from/start/anaconda3
도 필요하지 않습니다 ./*
find /path/from/start -path /path/from/start/anaconda3 -prune -o -name '*R' -print
기본적으로 -path
시작 경로가 "표준" 경로에서 반복된다는 점을 기억해야 합니다.
find /path/from/start -path /path/from/start/anaconda3 -prune -o -name '*R' -print
^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^
find . -path './anaconda3/*' -prune -o -name '*R' -print
^ ^
이것이 삭제하려는 유일한 디렉토리이거나 anaconda3
모든 디렉토리를 삭제하려는 경우 anaconda3
다음을 사용할 수 있습니다 -name
.
find /path/from/start -name anaconda3 -prune -o -name '*R' -print
이 모든 것은 여러 시작 경로를 지정하는 경우에도 적용됩니다. 각 -path
표현식은 모든 시작 경로에서 생성된 전체 경로 이름과 일치합니다. 따라서 다음을 가질 수 있습니다.
find /path/from/start /otherpath/from/elsewhere \
-path /path/from/start/anaconda3 -prune -o \
-path /otherpath/from/elsewhere/anaconda3 -prune -o \
-name '*R' -print