저는 GNU를 사용하고 있습니다 find
.
이 쉘 세션으로 문제를 줄였습니다.
$ mkdir t
$ cd t
$ touch a
$ ln -s a b
$ find -type l
./b
$ find -type l -o -type f
./a
./b
$ find -type l -print
./b
$ find -type l -o -type f -print
./a
졸려서 그럴지도 모르지만, 나에게는 이해되지 않는 두 가지 사항이 있습니다.
- 아니요
true OR false == true
? 일치하지만 추가하면 일치가 중지-o -type f
되는데 무슨 일이 일어나고 있나요 ?find
./b
-type l
- 매뉴얼 페이지에는 이것이
-print
기본 표현식이라고 나와 있는데, 언급되지 않은 경우 파일을 인쇄하고 언급된 경우 생략하는 이유는 무엇입니까?
이는 (내가 실제로 필요한 것)을 사용할 때도 발생합니다 -printf
. 다른 표현도 영향을 받을 것이라고 생각합니다.
답변1
존재하다
find -type l -o -type f -print
작업을 지정했으므로 기본값이 더 이상 적용되지 않습니다. 하지만 이는 "및"이 "또는"보다 우선순위가 높기 때문일 것 -printf
입니다 .-type f
find \( -type l \) -o \( -type f -print \)
링크와 파일을 동일한 방식으로 처리하려면 테스트를 그룹화해야 합니다.
find \( -type l -o -type f \) -print