find
디렉토리를 기반으로 여러 s에 대한 검색을 수행하고 싶습니다 .maxdepth
가능합니까? 이것은 -maxdepth
"전역"인 것 같지만 해결 방법이 있는지 궁금합니다.
(두 개의 개별 명령을 실행하는 것이 가능하다는 것을 알고 있지만 하나를 사용하면 더 빠르고 호출 코드가 더 간단해집니다.)
답변1
서로 다른 일치하는 경로 이름을 사용하여 이를 시뮬레이션할 수 있습니다 -prune
. 예를 들어 /etc
깊이 1과 /lib
깊이 2를 일치시키려면 다음을 수행합니다.
find /etc /lib/ \
\( -regex '/etc/[^/]*/.*' -prune \) \
-o \( -regex '/lib/[^/]*/[^/]*/.*' -prune \) \
-o -print
나머지 파일과 디렉터리에 대해 인쇄하거나 다른 방식으로 작업하려면 마지막 줄을 추가할 때 주의해야 합니다.
답변2
-maxdepth
아니요. 일련의 테스트 중 서로 다른 부분에 find
서로 다른 옵션을 적용 할 수 없습니다 . 지적하신 대로 전역 옵션이므로 모든 테스트에 적용됩니다. 여러 -maxdepth
옵션을 지정한 경우 마지막 옵션을 고려하여 전체 명령에 적용합니다.