locate "*.png"
Gibt .png
erwartungsgemäß alle Dateien zurück, die mit enden .
locate "test.*"
gibt nichts zurück, aber es gibt Dateien mit Namen test
in meinem System.
locate "*test"
Gibt test
erwartungsgemäß alle Dateien zurück, die mit enden .
locate "test*"
gibt nichts zurück, aber es gibt Dateien, die mit test
in meinem System beginnen.
Warum scheinen Platzhalter nur zum "Beenden mit" zu funktionieren?
test*
und übereinstimmentest.*
?Antworten:
.
wird als Punkt behandelt, nicht wie bei Regex als beliebiges Zeichen,test.*
stimmt also nicht übereintest
, abertest.foo
.Suchen speichert den vollständigen Pfad zur Datei . Um also Dateien zu finden, die mit dem Test beginnen, sollten Sie verwenden
locate "*/test*"
.Der letzte Punkt kann verwirrend sein, da er
locate foo
alles enthält, einschließlichfoo
, sodass das Muster als interpretiert wird*foo*
. Es scheint, dass das Muster nicht in Sternen eingeschlossen ist, wenn das Muster bereits einen Platzhalter enthält.Haftungsausschluss : Ich habe einige Tests durchgeführt und dies sind meine Schlussfolgerungen. Ich kann sie nicht durch Zitieren der Manpage beweisen, die sehr rudimentär erscheint.
quelle
man locate
Ich habe: Wenn --regex nicht angegeben ist, können MUSTER Globbing-Zeichen enthalten. Wenn ein MUSTER keine Globbing-Zeichen enthält, verhält sich die Suche so, als wäre das Muster * MUSTER *.