locate "*.png"
renvoie tous les fichiers se terminant par .png
, comme prévu.
locate "test.*"
ne renvoie rien, mais il y a des fichiers nommés test
dans mon système.
locate "*test"
renvoie tous les fichiers se terminant par test
, comme prévu.
locate "test*"
ne renvoie rien, mais il y a des fichiers commençant par test
dans mon système.
Pourquoi les caractères génériques semblent-ils fonctionner uniquement pour "se terminant par"?
test*
ettest.*
?Réponses:
.
est traité comme un point, non pas comme dans un regex comme un caractère arbitraire, donctest.*
ne correspond pastest
, maistest.foo
.Locate stocke le chemin complet du fichier , donc pour trouver des fichiers commençant par test, vous devez utiliser
locate "*/test*"
.Le dernier point peut être déroutant, car il
locate foo
trouve tout ce qui inclutfoo
, donc le motif est interprété comme*foo*
. Il semble que le motif ne soit pas entouré d'étoiles, s'il y a déjà un caractère générique dans le motif.Avertissement : j'ai fait quelques tests et ce sont mes conclusions, je ne peux pas les prouver en citant la page de manuel, qui semble très rudimentaire.
la source
man locate
J'ai: Si --regex n'est pas spécifié, les MOTIFS peuvent contenir des caractères globbing. Si un MOTIF ne contient aucun caractère de globbing, localiser se comporte comme si le motif était * MOTIF *.