저는 리눅스를 처음 접했습니다. 명령에 대해 질문이 있습니다 find
. 디렉터리 아래의 파일을 검색할 때 다음 이름의 하위 디렉터리를 건너뛰고 싶습니다.publish
find ./ -path ./publish -prune -o -iname rdesvc -type f -print
잘 작동합니다:
./release/apps/rdeSvc/server/linux/rdeSvc
그러나 매개변수를 제거하면 다음과 같습니다 -print
.
find ./ -path ./publish -prune -o -iname rdesvc -type f
하위 디렉터리 이름과 검색 결과가 출력됩니다.
./publish
./release/apps/rdeSvc/server/linux/rdeSvc
혼란스러워요. publish
매개변수를 제거한 후에도 하위 디렉토리 이름이 계속 출력되는 이유는 무엇입니까 -print
?
내 배포판은 CentOS 6.6 64비트입니다.
답변1
이것은 조합이다find
기본 동작은 다음과 같습니다.-print
그리고find
연산자 우선순위.
find ./ -path ./publish -prune -o -iname rdesvc -type f -print
로 설명되었다
find ./ \( -path ./publish -prune \) -o \( -iname rdesvc -type f -print \)
so ./publish
가 잘리고 rdesvc
일치하는 내용이 모두 인쇄됩니다.
하지만
find ./ -path ./publish -prune -o -iname rdesvc -type f
로 설명되었다
find ./ \( \( -path ./publish -prune \) -o \( -iname rdesvc -type f \) \) -print
그러니 ./publish
가지치기를 해라그리고인쇄하면 rdesvc
일치하는 내용이 모두 인쇄됩니다. ( -prune
이 작업의 평가 결과는 입니다 true
.)