find
manページには-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
ここで、最初の-print
print は true と評価されるため、-not -print
false と評価されます。その結果、2 番目の print は実行されません。