`locate` wildcard seltsames Verhalten - warum?

4490
Vittorio Romeo

locate "*.png"Gibt alle Dateien zurück .png, die erwartungsgemäß auf enden .

locate "test.*"gibt nichts zurück, aber es gibt Dateien, die testin meinem System benannt sind.

locate "*test"Gibt alle Dateien zurück test, die erwartungsgemäß auf enden .

locate "test*"gibt nichts zurück, aber es gibt Dateien, die mit testin meinem System beginnen.

Warum scheinen Wildcards nur für das "Ende mit" zu funktionieren?

9
Haben Sie den Standort nach dem Erstellen der Dateien, die mit "test *" und "test. *" Übereinstimmen, neu erstellt? Ignacio Vazquez-Abrams vor 10 Jahren 1
@ IgnacioVazquez-Abrams: Ja Vittorio Romeo vor 10 Jahren 0

1 Antwort auf die Frage

10
mpy

locate "test.*" gibt nichts zurück, aber es gibt Dateien mit dem Namen test in meinem System.

.wird als Punkt behandelt, nicht wie in Regex als willkürliches Zeichen, test.*passt also nicht test, sondern test.foo.

locate "test*"gibt nichts zurück, aber es gibt Dateien, die mit testin meinem System beginnen.

locate speichert den vollständigen Pfad zu der Datei . Um Dateien zu finden, die mit test beginnen, sollten Sie verwenden locate "*/test*".

Der letzte Punkt kann verwirrend sein, da locate fooalles gefunden wird foo, so dass das Muster als interpretiert wird *foo*. Es scheint, dass das Muster nicht in Sternen eingeschlossen ist, wenn bereits ein Platzhalter im Muster vorhanden ist.

Haftungsausschluss : Ich habe einige Tests durchgeführt und dies sind meine Schlussfolgerungen. Ich kann sie nicht anhand der Manpage beweisen, die sehr rudimentär erscheint.

In my `man locate` I have: _If --regex is not specified, PATTERNs can contain globbing characters. If any PATTERN contains no globbing characters, locate behaves as if the pattern were \*PATTERN*._ gniourf_gniourf vor 10 Jahren 3