Sự khác biệt giữa 'định vị' và 'tìm' trong Linux là gì?


Câu trả lời:


38

findtì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, ...)

locatesử 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 findman locatesẽ giúp bạn hơn nữa.


1
... và updatedblàm đại khái đôi khi như thế find / -type f | gzip > locate.gz.
F. Hauri

10
unix.stackexchange.com/questions/60205/ Trả lời câu hỏi này chi tiết hơn.
hấp dẫn về natty 15/03/13

3

Cả hai lệnh locatefindsẽ 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:

  • Để giải thích đơn giản, cơ sở dữ liệu lập chỉ mục tệp trong hệ thống Unix được gọi là slocate sẽ liệt kê các vị trí của tất cả các tệp gửi cùng với hệ thống Unix. Khi bạn thực thi 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 locatelà 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 locatelạ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 croncô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".

  • Nó thực sự sẽ đi và tìm kiếm tất cả các thư mục để tìm tệp cụ thể được chỉ định và nó kiểm tra từng tệp một. Do đó, nó đòi hỏi rất nhiều cuộc gọi I / O.

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. :)


0

locate chỉ cần nhìn cơ sở dữ liệu của nó và báo cáo vị trí tập tin.

find không sử dụng cơ sở dữ liệu, nó đi qua tất cả các thư mục và thư mục con của chúng và tìm kiếm các tệp phù hợp với tiêu chí đã cho.


0

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.

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.