`individuare` comportamento strano jolly - perché?


9

locate "*.png"restituisce tutti i file che terminano con .png, come previsto.

locate "test.*"non restituisce nulla, ma ci sono file nominati testnel mio sistema.

locate "*test"restituisce tutti i file che terminano con test, come previsto.

locate "test*"non restituisce nulla, ma ci sono file che iniziano con testnel mio sistema.

Perché i caratteri jolly sembrano funzionare solo per "terminare con"?


1
Hai ricostruito locationb dopo aver creato i file corrispondenti test*e test.*?
Ignacio Vazquez-Abrams,

@ IgnacioVazquez-Abrams: sì
Vittorio Romeo

Risposte:


12

locate "test.*" non restituisce nulla, ma ci sono file denominati test nel mio sistema.

.viene trattato come punto, non come in regex come carattere arbitrario, quindi test.*non corrisponde test, ma test.foo.

locate "test*"non restituisce nulla, ma ci sono file che iniziano con testnel mio sistema.

individuare memorizza il percorso completo del file , quindi per trovare i file che iniziano con il test, è necessario utilizzare locate "*/test*".

L'ultimo punto potrebbe essere fonte di confusione, poiché locate footrova qualcosa incluso foo, quindi il modello viene interpretato come *foo*. Sembra che il modello non sia racchiuso tra stelle, se nel modello è già presente un carattere jolly.

Disclaimer : ho fatto alcuni test e queste sono le mie conclusioni, non posso provarle citando la pagina man, che sembra molto rudimentale.


3
Nel mio man locateho: Se --regex non è specificato, i PATTERN possono contenere personaggi sconvolgenti. Se qualche PATTERN non contiene caratteri globbing, individuare si comporta come se il pattern fosse * PATTERN *.
gniourf_gniourf,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.