このコマンドの疑問符はどういう意味ですか?
find . –type d –name "?d*" –print
それなしで実行してみましたが、何の変化も感じませんでした。
答え1
疑問符は、ファイル名の1文字と正確に一致します。だから、
find -name "c?t"
cat
andは一致しますcot
が、coat
orは一致しませんct
。
価値があるのは非常に一般的なファイル名の一致規則であり、さまざまなコマンドラインインターフェイスのコンテキスト、さらにはWindowsのcmd
。
一致するものがない場合、疑問符を削除すると違いが発生します。
答え2
"?d*"
inのパターンはfind . -type d -name "?d*" -print
シェルではなくfind(depquidが正しく指定したように)によって解釈され、最初のd
文字は.
たとえば、ディレクトリと存在する場合、.dad
findコマンドは次を印刷しますada
。xd
./.dad
./ada
./xd
そして、シェルコマンドecho ?d*
(?d *パターンがシェルによって解釈される場合)は、少なくとも印刷されます(パターンに一致するすべてのファイルの名前があります)。
ada xd
一方、2番目の文字を含むディレクトリが存在しない場合、d
findは出力を生成しません。
?d*
答え3
疑問符はシェル内の単一文字として認識されます。この場合、名前は名前が 2 番目の文字 "d" で、その後に別の文字が続くディレクトリとして指定されます。
find
-name 指定に一致するディレクトリ名がないため、何も出力されません。
答え4
find . -name '?*.*'
"some(one) thing" 次の "anything" "dot" "anything" と一致します。
メモ:
- 「検索」検索モードです。いいえ正規表現ではなく bash glob 拡張です。
- 「何も」には「何も」を含めることができます。
したがって、上記はすべてのname.extensionおよび.name.extensionと一致しますが、名前のない「.extension」(または拡張子のない名前)は一致しません。
質問の「?d *」パターンは、「d」が続く単一の文字で始まるすべての名前と一致します。