Câu trả lời:
Câu trả lời phụ thuộc vào phiên bản locate
bạn đang sử dụng, nhưng có một cơ hội công bằng mlocate
, nó updatedb
chạy nhanh bằng cách tránh thực hiện quét toàn bộ đĩa:
mlocate là một triển khai xác định vị trí / cập nhật. 'M' là viết tắt của "hợp nhất": updateb sử dụng lại cơ sở dữ liệu hiện có để tránh đọc lại hầu hết hệ thống tệp, giúp cập nhật nhanh hơn và không làm hỏng hệ thống lưu trữ nhiều.
(Cơ sở dữ liệu lưu trữ dấu thời gian của mỗi thư mục, ctime
hoặc mtime
tùy theo cái nào mới hơn.)
Giống như hầu hết các triển khai khác updatedb
, mlocate
chúng cũng sẽ bỏ qua các hệ thống tệp và đường dẫn mà nó được cấu hình để bỏ qua. Theo mặc định chẳng có gì trong mlocate
trường hợp 's, nhưng phân phối thường cung cấp một cơ sở updatedb.conf
mà bỏ qua các hệ thống tập tin mạng, các hệ thống tập tin ảo, vv (xem tập tin cấu hình của Debian ví dụ, đây là phương thức chuẩn trong Debian, vì vậy GNU của updatedb
được cấu hình tương tự ).
mtime
cha mẹ ngay lập tức của nó.
mlocate
quan tâm ctime
và mtime
ngụ ý rằng nó chỉ quan tâm đến việc liệu danh sách các mục trong thư mục có giống nhau không (không có tệp bị xóa hoặc thêm), có nghĩa là nó không quan tâm đến các tệp thực tế. Đúng không ?
locate
không phải grep -R
. Nó không đọc nội dung tập tin.
Ngoài việc kiểm tra thời gian sửa đổi, mlocate
cũng bỏ qua các phần phụ nhất định của hệ thống tệp có nhiều tệp không quan tâm hoặc có khả năng trùng lặp, như được chỉ định trong /etc/updatedb.conf (và được mô tả trong man updateb.conf ):
updatedb
triển khai khác cũng hỗ trợ các loại trừ được định cấu hình.)