find が . を見つけるときもあれば、見つからないときもあるのはなぜですか?

find が . を見つけるときもあれば、見つからないときもあるのはなぜですか?
find -name "?"
find ~ -name "?"

これらのコマンドの 1 つは検出できて.、もう 1 つは検出できないのはなぜですか? 明示的なパスを持つ 2 番目のバージョンで、.指定されたディレクトリ内の他の 1 文字ファイルとともにエントリを検出するには、どうすればよいですか?

find (GNU findutils) 4.5.11重要な場合に備えて...

答え1

starting pointforがない場合find.(現在のディレクトリ) が使用されます。実際、次の 2 行は同じ出力を生成します。

find -name "?"
find . -name "?"

出発点を指定できるようにするそしてfindディレクトリを見つけて./.開始点に追加します。例:

find ~/. -name "?"

編集: では、なぜなのかという疑問について、次の 2 つのコマンドを比較してみましょう。

find ~/. -name "?"
find ~ -name "?"

出力には 2 つの違いがあります。まず、コマンド with は、予想どおり、各行に/.追加の を含む結果を生成します。2 番目は、これが OP の根本的な質問ですが、コマンドは擬似ディレクトリ自体を見つけますが、コマンドは見つけないということです。これは、検索で を明示的に検索するように要求しているためです。コマンド ラインにリストされていない限り、および擬似ディレクトリは無視されます。(そうでない場合を想像できますか?)/./.~/.~~/..findfind...

man find詳細については、を参照してください。

関連情報