다음은 의도한 대로 작동합니다.
$ 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
그러나 이것은 아무것도 반환하지 않습니다.
무슨 일이야?
편집: 디버깅:
$ 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
답변1
파일을 찾을 때 표준 와일드카드(globbing 패턴이라고도 함)가 포함된 찾기 명령은 로컬 데이터베이스에서 파일 경로를 찾습니다. /synse_*_r_unseen_zs.npy
파일에 대한 전체 경로가 아니므로 아무것도 반환하지 않지만( Ubuntu locate /synse_*_r_unseen_zs.npy
의 검색 결과는 빈 세트이기 때문에 ) 파일에 대한 전체 경로이므로 명령 결과를 반환합니다. 이러한 명령의 별표 문자는 찾기에 의해 와일드카드로 해석됩니다. 별표는 원하는 수의 문자(0개, 즉 0개 이상의 문자 포함)를 나타낼 수 있습니다.locate synse_*_r_unseen_zs.npy
*/synse_*_r_unseen_zs.npy
locate */synse_*_r_unseen_zs.npy
답변2
@steeldriver가 언급했듯이 locate
기본적으로 *
검색어의 시작과 끝에 와일드카드를 첨부합니다( locate abc
실제로도 마찬가지입니다 locate *abc*
).제외하고검색어에 와일드카드를 직접 추가하면 추가 *
와일드카드가 추가되거나 앞에 추가되지 않습니다.
따라서 검색어 앞에 $ locate synse_*_r_unseen_zs.npy
a가 추가되지 않았기 때문에 아무것도 찾지 못하지만 예상되는 것을 찾습니다.*
$ 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