`định vị` ký tự đại diện hành vi lạ - tại sao?


9

locate "*.png"trả về tất cả các tập tin kết thúc bằng .png, như mong đợi.

locate "test.*"không trả về bất cứ thứ gì, nhưng có những tệp có tên testtrong hệ thống của tôi.

locate "*test"trả về tất cả các tập tin kết thúc bằng test, như mong đợi.

locate "test*"không trả lại bất cứ điều gì, nhưng có những tập tin bắt đầu testtrong hệ thống của tôi.

Tại sao các ký tự đại diện dường như chỉ hoạt động cho "kết thúc bằng"?


1
Bạn đã xây dựng lại vị trí sau khi tạo các tệp phù hợp test*test.*?
Ignacio Vazquez-Abrams

@ IgnacioVazquez-Abrams: có
Vittorio Romeo

Câu trả lời:


12

locate "test.*" không trả lại bất cứ điều gì, nhưng có các tệp có tên thử nghiệm trong hệ thống của tôi.

.được coi là dấu chấm, không phải trong regex là một ký tự tùy ý, vì vậy test.*không khớp test, nhưng test.foo.

locate "test*"không trả lại bất cứ điều gì, nhưng có những tập tin bắt đầu testtrong hệ thống của tôi.

xác định vị trí lưu trữ đường dẫn đầy đủ đến tệp , vì vậy để tìm tệp bắt đầu bằng kiểm tra, bạn nên sử dụng locate "*/test*".

Điểm cuối cùng có thể gây nhầm lẫn, vì locate footìm thấy bất cứ điều gì bao gồm foo, vì vậy mô hình được hiểu là *foo*. Có vẻ như mẫu không được đặt trong các ngôi sao, nếu đã có một ký tự đại diện trong mẫu.

Tuyên bố miễn trừ trách nhiệm : Tôi đã thực hiện một số thử nghiệm và đây là kết luận của tôi, tôi không thể chứng minh chúng bằng cách trích dẫn trang người đàn ông, có vẻ rất thô sơ.


3
Trong tôi man locatecó: Nếu --regex không được chỉ định, các MẪU có thể chứa các ký tự toàn cầu. Nếu bất kỳ MẪU ​​NÀO không chứa các ký tự toàn cầu, hãy xác định vị trí ứng xử như thể mẫu đó là * MẪU *.
gniourf_gniourf
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.