찾기 - 모든 결과를 인쇄하거나 인쇄하지 않음

찾기 - 모든 결과를 인쇄하거나 인쇄하지 않음

다음 파일이 포함된 디렉터리:

irrelevant  irrelevant.doc  dok1.txt  dok2.text  dok3.txt  dok4.text

모든 *txt 및 *text 파일을 찾아서 변환해야 합니다.

find명령 및 결과:

$ find -name '*txt' -or -name '*text'
./dok2.text
./dok4.text
./dok3.txt
./dok1.txt

이는 이 네 개의 파일을 -exec.

불행하게도 (또는 )을 find사용하면 다음이 생성됩니다.-print-exec echo {} +

$ find -name '*txt' -or -name '*text' -print
./dok2.text
./dok4.text

분명히 이것은 find의 경우입니다(찾기 매뉴얼 페이지에서):

NON-BUGS
   Operator precedence surprises
       The command find . -name afile -o -name bfile -print will never print afile
       because this is actually equivalent to find . -name afile -o \( -name bfile
       -a -print \).  Remember that the precedence of -a is higher than that of -o
       and when there is no operator specified between tests, -a is assumed.

-exec에서 네 개의 파일을 모두 사용할 수 있도록 하려면 find 명령을 어떻게 제공해야 합니까?

답변1

그룹으로서 다음 and-ed 표현식과 동일한 우선순위를 갖도록 or-ed 표현식을 그룹화해야 합니다.

find \( -name '*txt' -or -name '*text' \) -print

관련 정보