find はどのように式を評価しますか?

find はどのように式を評価しますか?

findmanページには-printアクションの値が であると書かれていますtrueが、なぜこのコマンドは

find /home \( -not -print \)

ディレクトリ内のすべてのファイルを常に一覧表示しますか?

答え1

この-printアクションはtrueの値を持ちますが、印刷されます。

すべてのファイルを 2 回印刷することに注意してください。

$ find .  -print  -print
.
.
./file1
./file1
./file2
./file2

2 つの print ステートメントがあるにもかかわらず、このコマンドは 1 回だけ印刷します。

$ find . \( -not -print \) -print
.
./file1
./file2

ここで、最初の-printprint は true と評価されるため、-not -printfalse と評価されます。その結果、2 番目の print は実行されません。

関連情報