このパターンは、findを介して一致する部分でどこに現れますか?

このパターンは、findを介して一致する部分でどこに現れますか?

マンページは次のようにfind述べています。

- 名前

ファイル名ベース(先行ディレクトリが削除されたディレクトリパス)

$ find ~ -name bookmark | less

何も返さないけど

$ find ~ -name bookmarks | less
./.streamtuner/cache/bookmarks
./.config/zathura/bookmarks
./.elinks/bookmarks

3つのゲームがあります。

なぜ最初のものは2番目のものと一致しないのですか?

ファイル名の場所に関係なく、名前にその内容を含むファイルを見つけるにはbookmarkどうすればよいですか?ありがとうございます。bookmarkfind

答え1

与えられたパターン-name一致する必要がありますみんなデフォルトのファイル名。このモードの動作は次-nameのように定義されます。

現在のパス名のデフォルト名がパターンと一致する場合は、デフォルトパスをtrueと評価する必要があります。

つまり、フルネーム名を次のように比較すると模様あなたは与えた。パターンは基本的にシェルグローブに似ていると考えることができます。*?および[...]パターンを使用する場合、パターンの開始と終了は文字列の開始と終了と整列します。

したがって、あなたのコマンドは次のようになります。

find ~ -name bookmarks

フルファイル名なので、「bookmarks」というファイルを探してください。ただし、次のとおりです。

find ~ -name bookmark

パターンにワイルドカードがないため、「bookmark」というファイルのみが検索されます。

bookmark名前付きファイルを一致させるには、bookmarks次のものを使用できます。

find ~ -name 'bookmark*'

だから探したいなら

ファイル名内のブックマークの場所に関係なく、名前にブックマークを含むファイル

あなたが使用できる:

find ~ -name '*bookmark*'

名前に任意数の文字が含まれ、その後にbookmark、任意数の文字が含まれたファイルと一致します。

答え2

-nameコマンドの引数の引数は、findコマンドラインのファイル/ディレクトリ名にあるワイルドカードとまったく同じです。 * は任意の文字列、? は任意の文字です。

関連情報