다음 파일이 포함된 디렉터리:
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