Có cách nào để tăng tốc độ 'tìm` không


15

Tôi tự hỏi có cách nào để tăng findtốc độ trong thiết bị đầu cuối không, có nghĩa là sử dụng internet google để tìm kiếm sẽ có tốc độ tốt hơn so với thực hiện tìm kiếm cục bộ cho chuỗi hoặc chỉ tên tệp.

Tôi tự hỏi có cách nào để có một cơ sở lập chỉ mục cục bộ, một khi được xây dựng, trong tương lai, lệnh find có thể cực nhanh.

Hoặc bất kỳ đề nghị khác?

Cảm ơn!


Bạn có thể chỉnh sửa bài đăng của mình với hệ điều hành và / hoặc phân phối không?
Jodie C

Câu trả lời:


15

Hãy thử sử dụng locate, nó sẽ làm những gì bạn muốn.


13
Nó thường là một ý tưởng tốt để đưa ra câu trả lời nhiều hơn một chút. Giống như đề cập đến gói nào locateđến từ (thường slocate) và để sử dụng updatedbđể xây dựng lại DB. :-)
Patrick

1
Điều này không hoạt động đối với các phân vùng đã tắt chỉ mục. Ví dụ: phân vùng NTFS bị hiệu năng kém nếu lập chỉ mục được bật, do đó, định vị sẽ không hoạt động đối với những người "như bình thường".
ojrask

9

Nó phụ thuộc nhiều vào tiêu chí tìm kiếm của bạn là gì.

Nếu bạn tìm kiếm tên tệp hoặc mẫu tên tệp, định vị nhanh hơn nhiều, nhưng không phù hợp với các tệp được tạo mới, vì chỉ mục được sử dụng thường chỉ được cập nhật một lần mỗi ngày. Nhưng nếu bạn có thể sử dụng nó, nó là siêu nhanh.

Nhưng với find, bạn có thể tìm kiếm kích thước tập tin, tuổi tập tin và những thứ khác mà không thể tìm kiếm bằng cách xác định vị trí.

Nếu bạn biết nơi tìm kiếm, bạn có thể sử dụng đường dẫn để phân định phạm vi tìm kiếm:

find /some/path -size -10M -size +2M -mtime -365 ...

sẽ chỉ tìm kiếm các tệp từ 2 đến 10 M, tối đa 1 tuổi trong / some / path.

Các chương trình, có sẵn trong đường dẫn có thể được tìm kiếm theo đó, các tệp trợ giúp, lib và cấu hình trong đó. Ví dụ:

which java
/usr/bin/java

whereis firefox 
firefox: /usr/bin/firefox /etc/firefox /usr/lib/firefox /usr/share/firefox /usr/share/man/man1/firefox.1.gz

7

Sử dụng locate

Lý do là locatesử dụng cơ sở dữ liệu của tất cả các thư mục và tệp hiện có đã được xây dựng giống như bạn tưởng tượng!
http://linux.about.com/od/commands/l/blcmdl5_locatedb.htm

Tại một số khoảng thời gian đã đặt (và có thể thay đổi), một công việc chạy sẽ quét hệ thống tệp và sau đó xây dựng cơ sở dữ liệu với nó. Sau đó, cơ sở dữ liệu này (xác định vị trí), với các chỉ mục thích hợp mà locatelệnh đi ngược lại thay vì quét qua ổ cứng của bạn tại thời điểm đó.

Vì vậy, ưu điểm là nó rất nhanh so với quét ổ cứng. Nhược điểm là cơ sở dữ liệu định vị (định vị) không 'sống' nên chỉ có thể được sử dụng cho các tệp tồn tại 'kể từ lần quét cuối cùng.

Để cập nhật định vị ngay bây giờ chạy updatedb(hoặc sudo updatedbnếu cần)

btw Tôi chỉ chạy sudo updatedbcục bộ và mất 3 giây rưỡi! Tôi có 31.000 tập tin.


1

Như những người khác đã chỉ ra, định vị có thể là một công cụ tốt hơn cho người tìm kiếm đơn giản hơn.

Tuy nhiên, đối với các tìm kiếm phức tạp hơn, bạn có thể bị mắc kẹt với tìm kiếm.

Một cách để tăng tốc độ tìm kiếm là thu hẹp thư mục mà tập tin của bạn đang ở thay vì tìm kiếm tất cả thư mục gốc.


0

cho một hoạt động tìm kiếm duy nhất; Tôi đã không tìm thấy bất kỳ tăng tốc; trừ khi cố gắng thu hẹp tìm kiếm bằng findcác tùy chọn.

Tuy nhiên; nếu bạn muốn thực hiện nhiều findthao tác trên cùng một tập tin ; Tôi đã nhận được một tốc độ đáng kể để điền vào một tệp tạm thời với tất cả các tên tệp và sử dụng grep. Tất nhiên, điều này không đưa vào các tập tin tài khoản được thêm hoặc xóa.

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.