「locate」ワイルドカードの奇妙な動作-なぜですか?


9

locate "*.png".png期待どおり、で終わるすべてのファイルを返します。

locate "test.*"何も返されませんがtest、私のシステムで名前が付けられたファイルがあります。

locate "*test"test期待どおり、で終わるすべてのファイルを返します。

locate "test*"何も返されませんがtest、私のシステムにはで始まるファイルがあります。

ワイルドカードが「で終わる」だけで機能するように見えるのはなぜですか?


1
あなたはその試合のファイルを作成した後locatedbを再構築しましたtest*test.*
Ignacio Vazquez-Abrams

@ IgnacioVazquez-Abrams:はい
Vittorio Romeo

回答:


12

locate "test.*" 何も返されませんが、私のシステムにはtestという名前のファイルがあります。

.ない正規表現の任意の文字などのように、ドットとして扱われるので、test.*一致していないtest、しかしtest.foo

locate "test*"何も返されませんがtest、私のシステムにはで始まるファイルがあります。

Locate はファイルへのフルパスを格納するので、testで始まるファイルを見つけるには、を使用する必要がありますlocate "*/test*"

最後のポイントは、をlocate foo含むすべてを見つけるfooため、混乱する可能性があるため、パターンはとして解釈され*foo*ます。パターンにワイルドカードがすでに1つある場合、パターンは星で囲まれていないようです。

免責事項:私はいくつかのテストを行いました、そしてこれらは私の結論です、私はマニュアルページを引用することによってそれらを証明することはできません。


3
私の場合man locate:-- regexが指定されていない場合、PATTERNにグロビング文字を含めることができます。PATTERNにグロビング文字が含まれていない場合、locateはパターンが* PATTERN *であるかのように動作します。
gniourf_gniourf 2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.