"find"コマンドの "-print"パラメータの混乱

私はLinuxに初めて触れました。コマンドについて質問がありますfind。ディレクトリの下のファイルを検索するときは、次の名前のサブディレクトリをスキップしたいと思います。publish

find ./ -path ./publish -prune -o -iname rdesvc -type f -print

うまく動作します:

./release/apps/rdeSvc/server/linux/rdeSvc

ただし、パラメータを削除すると次のようになります-print

find ./ -path ./publish -prune -o -iname rdesvc -type f

サブディレクトリ名と検索結果が出力されます。

./publish
./release/apps/rdeSvc/server/linux/rdeSvc

混乱しています。publishパラメータを削除してもサブディレクトリ名が出力され続けるのはなぜですか-print

私のディストリビューションはCentOS 6.6 64ビットです。

ベストアンサー1

これは組み合わせですfindデフォルトの動作は次のとおりです。-printそしてfind演算子優先順位

find ./ -path ./publish -prune -o -iname rdesvc -type f -print

として説明された

find ./ \( -path ./publish -prune \) -o \( -iname rdesvc -type f -print \)

so./publishが切り捨てられ、rdesvc一致する内容がすべて印刷されます。

しかし、

find ./ -path ./publish -prune -o -iname rdesvc -type f

として説明された

find ./ \( \( -path ./publish -prune \) -o \( -iname rdesvc -type f \) \) -print

だから./publish剪定をしなさいそして印刷すると、rdesvc一致する内容がすべて印刷されます。 (-pruneこの作業の評価結果はですtrue。)

おすすめ記事