私は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
。)