`-name`と`-exec`オプションは`find`のオプションではない引数ですか?

`-name`と`-exec`オプションは`find`のオプションではない引数ですか?

-nameそしてオプションのパラメータですか-exec、それとも非オプションのパラメータですかfind?これは短いオプションのように見え、私が正確に覚えている場合は照会式と呼ばれます。例えば、

find . -name "*.txt" -exec echo {} \;

答え1

このfindコマンドには2つのオプションしかありません。POSIXでは-H-L)または5つGNUでは(返品-P-Ddebug_opt-O#)。他のすべてのパラメータはオプションではないため、オプションパラメータではありません。

オプションがあることは注目に値する。find 先にあるパスとすべての find 式は、次のパスに従う必要がありますfind [option...] path... [expression...]。 (GNU findには「オプション」とも呼ばれる追加の基本的な項目がいくつかあります。たとえば-maxdepth、実際にはオプションではなく式セクション内に表示されますが、警告メッセージを呼び出すとわかりやすくなると思います。)

答え2

-name-execちょっと-print待ってオプションfindユーティリティ会社にありますがオペランド。一つのオペランドは

通常、処理を完了するために必要な情報をユーティリティに提供するオブジェクトとして使用されるコマンドの引数です。オペランドは通常、コマンドラインのオプションに従います。

(からPOSIXの定義)、つまりユーティリティに何をすべきかを知らせるオプションではありません(fileコマンドから削除するファイルをrm file知らせるなどrm)。

findこのユーティリティのPOSIX標準の説明このオペランドを呼び出す予備選挙これはBSDシステムの名前でもあります。

GNUfindマニュアルでは、次のように呼ばれます。表現そして目的に応じていくつかのグループに分けられます。

  • テスト(例-name:、-mtime
  • ジョブ(例:-delete-print
  • グローバルオプション(例:-maxdepth-depth
  • 位置オプション(例-follow:)
  • 演算子(例、、、-not-and

POSIX標準findには2つの実際のオプションしか-Hありません-L。これはシンボリックリンクの処理方法に関連しています。

POSIX 標準では、ユーティリティに対して複数文字オプションまたは「長いオプション」を定義しません。これは、実装時に長いオプションを追加することを防ぎません。GNUユーティリティは、利便性を高めるために特に表現力のある長いオプションを追加することが知られています。

関連情報