web-dev-qa-db-ja.com

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

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

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

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

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

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

9
Vittorio Romeo

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

.はドットとして扱われ、正規表現では任意の文字として扱われないため、test.*testとは一致しませんが、test.fooと一致します。

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

ストアの検索ファイルへのフルパスなので、testで始まるファイルを検索するには、locate "*/test*"を使用する必要があります。

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

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

12
mpy