Warum funktioniert „locate */file*name“, aber „locate file*name“ nicht?

Warum funktioniert „locate */file*name“, aber „locate file*name“ nicht?

Folgendes funktioniert wie vorgesehen:

$ locate */synse_*_r_unseen_zs.npy 
/mnt/home/dario/temp/synse_resources/language_modelling/repo_test_cadavae_5_r_val/bert/cadavae_5_r_unseen_zs.npy                                                                                                   /mnt/home/dario/temp/synse_resources/language_modelling/repo_test_synse_10_r_val/bert/synse_10_r_unseen_zs.npy 
$ locate synse_*_r_unseen_zs.npy 

Dies gibt jedoch nichts zurück.

Was ist los?

BEARBEITEN: Debuggen:

$ echo */synse_*_r_unseen_zs.npy 
*/synse_*_r_unseen_zs.npy
$ echo /synse_*_r_unseen_zs.npy
/synse_*_r_unseen_zs.npy
$ echo synse_*_r_unseen_zs.npy
synse_*_r_unseen_zs.npy

Antwort1

Beim Suchen von Dateien sucht ein Locate-Befehl, der Standard-Platzhalter (auch als Globbing-Muster bekannt) enthält, nach Pfaden zu Dateien in seiner lokalen Datenbank. /synse_*_r_unseen_zs.npyist kein vollständiger Pfad zu einer Datei und locate /synse_*_r_unseen_zs.npygibt daher nichts zurück (da die Suchergebnisse locate synse_*_r_unseen_zs.npyin Ihrem Ubuntu eine leere Menge sind), */synse_*_r_unseen_zs.npyist jedoch ein vollständiger Pfad zu Datei(en) und locate */synse_*_r_unseen_zs.npygibt daher die Ergebnisse des Befehls zurück. Das Sternchen in diesen Befehlen wird von Locate als Platzhalter interpretiert. Das Sternchen kann eine beliebige Anzahl von Zeichen darstellen (einschließlich Null, also null oder mehr Zeichen).

Antwort2

Wie @steeldriver erwähnt hat, locatewird standardmäßig ein *Platzhalter an den Anfang und das Ende des Suchbegriffs angehängt (so locate abcist es eigentlich locate *abc*)außerWenn Sie dem Suchbegriff selbst ein Platzhalterzeichen hinzufügen, werden die zusätzlichen *Platzhalterzeichen weder angehängt noch vorangestellt.

Also, while $ locate synse_*_r_unseen_zs.npyfindet nichts, weil es *dem Suchbegriff kein a voranstellt, $ locate *synse_*_r_unseen_zs.npyfindet das erwartete

/mnt/home/dario/temp/synse_resources/language_modelling/repo_test_cadavae_5_r_val/bert/cadavae_5_r_unseen_zs.npy                                                                                                   /mnt/home/dario/temp/synse_resources/language_modelling/repo_test_synse_10_r_val/bert/synse_10_r_unseen_zs.npy 

verwandte Informationen