次のファイルを含むディレクトリ:
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