*/file*name 찾기는 작동하고 file*name 찾기는 작동하지 않는 이유는 무엇입니까?

*/file*name 찾기는 작동하고 file*name 찾기는 작동하지 않는 이유는 무엇입니까?

다음은 의도한 대로 작동합니다.

$ 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.npylocate */synse_*_r_unseen_zs.npy

답변2

@steeldriver가 언급했듯이 locate기본적으로 *검색어의 시작과 끝에 와일드카드를 첨부합니다( locate abc실제로도 마찬가지입니다 locate *abc*).제외하고검색어에 와일드카드를 직접 추가하면 추가 *와일드카드가 추가되거나 앞에 추가되지 않습니다.

따라서 검색어 앞에 $ locate synse_*_r_unseen_zs.npya가 추가되지 않았기 때문에 아무것도 찾지 못하지만 예상되는 것을 찾습니다.*$ 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 

관련 정보