Tôi đang cố gắng xác định tất cả các bản sao example.filename
trên máy chủ FreeBSD của mình. Cách tốt nhất / dễ nhất / hiệu quả nhất để làm điều này là gì?
Tôi đang cố gắng xác định tất cả các bản sao example.filename
trên máy chủ FreeBSD của mình. Cách tốt nhất / dễ nhất / hiệu quả nhất để làm điều này là gì?
Câu trả lời:
find / -name example.filename
locate filename
Nhanh hơn nhiều so với find
, nếu bạn đang chạy dịch vụ định vị và nó chỉ tìm thấy các tệp tồn tại vào updatedb
lần chạy cuối cùng (thông thường vào ban đêm dưới sự kiểm soát của công việc định kỳ).
Bạn có thể chạy updatedb
bằng tay, nhưng điều đó thậm chí còn chậm hơn so với các find
cletus gợi ý , và đòi hỏi root. Thỉnh thoảng tôi cập nhật cơ sở dữ liệu bằng tay sau khi cài đặt một loạt các công cụ mới.
find /
hoặc trên bất kỳ cây lớn nào hơn một lần một tuần, thì việc chạy locate
dịch vụ có lẽ là đáng giá, bởi vì locate(1)
nó nhanh hơn rất nhiều.
sudo periodic weekly
cập nhật locate
cơ sở dữ liệu. Chạy nó sau khi cài đặt hoặc tải xuống có thể chứa các tệp bạn muốn.
Nếu bạn đã cài đặt định vị (còn gọi là slocate), thì
locate example.filename
xác định vị trí chạy một công việc định kỳ mỗi đêm mà giới thiệu lại tất cả các tệp trên máy của bạn. Không phải lúc nào cũng cập nhật vì lý do đó.
Đôi khi bạn muốn tìm tập tin ở cấp thư mục cụ thể. Trong trường hợp này có thể thuận tiện để sử dụng ký tự đại diện shell:
ls /data/*/example.filename
Rõ ràng điều này chỉ hoạt động nếu bạn có một cấu trúc thư mục cứng nhắc.
locate
Như những người khác đã đề cập, locate
là cách nhanh chóng để tìm một tập tin. Lệnh này sử dụng một chỉ mục được biên dịch trước của tên tệp và thư mục. Cơ sở dữ liệu tên này được tìm kiếm, thay vì thu thập thông tin qua hệ thống tệp của bạn.
locate example.filename
Để không phân biệt chữ hoa chữ thường, thêm -i
.
locate -i eXAmPle.FileName
locate
cơ sở dữ liệuCơ sở dữ liệu được sử dụng locate
phải được cập nhật. Sau khi thực hiện cài đặt hoặc tải xuống có thể chứa tệp bạn muốn, bạn phải cập nhật locate
cơ sở dữ liệu.
Cơ locate
sở dữ liệu cuối cùng sẽ được cập nhật tự động bởi hệ thống FreeBSD của bạn. Có một bộ công việc hàng tuần bao gồm nhiệm vụ này. Những việc vặt được liệt kê trong /etc/periodic/weekly/310.locate
kịch bản.
Cách an toàn nhất dễ dàng nhất để buộc cập nhật sớm locate
cơ sở dữ liệu là buộc các công việc hàng tuần phải được thực hiện ngay bây giờ.
sudo periodic weekly
Hoặc, bạn thậm chí có thể buộc tất cả các công việc thường xuyên phải được thực hiện. Bạn có thể muốn làm điều này ngay lập tức sau khi thiết lập một hệ thống FreeBSD mới.
sudo periodic daily weekly monthly
Nếu sử dụng các con đường khác để cập nhật locate
cơ sở dữ liệu, bạn có thể nhận được thông báo về việc không an toàn, tiết lộ tên của tất cả các tệp của hệ thống của bạn cho bất kỳ người dùng nào trên hệ thống FreeBSD. Sử dụng periodic
tuyến đường tránh được vấn đề này.
Nếu bạn có cơ sở dữ liệu định vị cập nhật, thì chỉ cần:
locate example.filename
Tôi thỉnh thoảng làm
find . | grep example.filename
có lẽ rất kém hiệu quả.