検索 - すべての結果を印刷または印刷しない

検索 - すべての結果を印刷または印刷しない

次のファイルを含むディレクトリ:

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

これは、これらの4つのファイルを-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で4つのファイルをすべて使用できるようにするには、findコマンドをどのように提供する必要がありますか?

ベストアンサー1

グループとして、次のand-ed式と同じ優先順位を持つようにor-ed式をグループ化する必要があります。

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

おすすめ記事