Câu trả lời:
find
tìm kiếm trong hệ thống thực. Chậm hơn nhưng luôn cập nhật và có nhiều tùy chọn hơn (kích thước, thời gian sửa đổi, ...)
locate
sử dụng một cơ sở dữ liệu được xây dựng trước đó (lệnh updatedb
). Nhanh hơn nhiều, nhưng sử dụng cơ sở dữ liệu 'cũ hơn' và chỉ tìm kiếm tên hoặc các phần của chúng.
Trong mọi trường hợp, man find
và man locate
sẽ giúp bạn hơn nữa.
updatedb
làm đại khái đôi khi như thế find / -type f | gzip > locate.gz
.
Cả hai lệnh locate
và find
sẽ tìm thấy một tệp, nhưng chúng hoạt động theo những cách khá khác nhau.
locate
sẽ hoạt động ở chế độ ngoại tuyến:
locate
, nó sẽ sử dụng cơ sở dữ liệu đó để tìm kiếm một tệp cụ thể. Vấn đề với locate
là nếu bạn vừa tạo một tệp mà bây giờ bạn muốn tìm kiếm, định vị sẽ không hoạt động vì cơ sở dữ liệu slocate không cập nhật. Để khắc phục vấn đề này, bạn có thể sử dụng updatedb
để cập nhật cơ sở dữ liệu slocate . Thực hiện locate
lại bây giờ sẽ tìm thấy tập tin mới được tạo. Vì vậy, nhiều quản trị viên hệ thống Linux sử dụng một cron
công việc để thường xuyên cập nhật cơ sở dữ liệu slocate .find
sẽ hoạt động ở chế độ trực tuyến / "trong thời gian thực".
Vì vậy, dựa trên bản chất, rõ ràng là xác định vị trí nhanh hơn tìm nhưng tìm thấy là thời gian thực.
Hy vọng điều này sẽ giúp để xóa ý tưởng. Tất cả tốt nhất. :)
Một thay thế cho việc sử dụng find là lệnh định vị. Lệnh này thường nhanh hơn và có thể dễ dàng tìm kiếm toàn bộ hệ thống tệp. Bạn có thể cài đặt lệnh với apt-get:
sudo apt-get update
sudo apt-get install mlocate
Lý do xác định vị trí nhanh hơn tìm là vì nó dựa trên cơ sở dữ liệu của các tệp trên hệ thống tệp. Cơ sở dữ liệu thường được cập nhật mỗi ngày một lần với tập lệnh cron, nhưng bạn có thể cập nhật thủ công bằng cách nhập:
sudo updatedb
Chạy lệnh này ngay bây giờ. Hãy nhớ rằng, cơ sở dữ liệu phải luôn được cập nhật nếu bạn muốn tìm các tệp được mua hoặc tạo gần đây.