"find -name"コマンドの[.]*と".*"の違いは何ですか?

.私の目標は、ファイルシステム内のドット()で始まるすべてのファイルまたはディレクトリを見つけることです.gnupg。それで私はこのような命令を思い出しました。

find -name '.*'

オンラインで確認してみると、オプションのパラメータ値[.]*として置換を使用する必要があるというヒントがありました。-name結果は同じに見えますが、2つの方法の違いは何ですか?

ベストアンサー1

まったく違いはありません。しようとした場合:

$ diff <(find -name '.*') <(find -name '[.]*')

どんな結果も得られません。これはコマンド出力が同じであることを意味します。私はあなたがこの「ヒント」を文脈から逸脱したと思います。意図は異なる場合があります。

findマニュアルページから:

-nameパターン
ファイル名(先行ディレクトリが削除された先行ディレクトリへのパス)のデフォルトは、シェルパターンパターンと一致します。*',デフォルト名の先頭のメタ文字( ? 'と.'(findutils-4.2.2の変更))[]') match a

パラメータが文字クラスとして解釈されることを意味します[]。その中に何もないという点-nameを除いて、 を使用していないかのように.リテラルと一致します。.[]

おすすめ記事