-print 유무에 관계없이 다른 출력을 제공하는 find 명령

-print 유무에 관계없이 다른 출력을 제공하는 find 명령
find src/ -name "*.cc" -o -name "*.cpp" -print
find src/ -name "*.cc" -o -name "*.cpp"

의도된 동작은 디렉터리와 모든 하위 디렉터리에서 모든 C++ 파일을 찾는 것입니다. 내가 이해한 대로 -print 명령이 기본값이었습니다. 그러나 이 두 명령은 상당히 다른 결과를 제공합니다. 파일( 각각 printed및 )로 리디렉션하는 경우:notprinted

$ wc -l printed notprinted
1813 printed
1979 notprinted

정렬된 각 파일을 비교하는 것은 나에게 별로 도움이 되지 않습니다. 에서 제외되는 항목에 대한 명확한 패턴이 없습니다 printed.

여기서 무슨 일이 일어나고 있는 걸까요?

답변1

답은 우선순위입니다. 작업이 지정되지 않으면 인쇄되지만 작업을 지정하면 요청한 작업이 수행됩니다. 귀하의 예는 파일 -print만 인쇄합니다 .cpp. 당신은 아마도 다음을 원할 것입니다 :

find src/ \( -name "*.cc" -o -name "*.cpp" \) -print

다양한 작업을 포함하는 여러 조건을 가질 수 있습니다.

관련 정보