Lệnh "locate" trong Linux [10 ví dụ]

Một trong những trải nghiệm khó chịu nhất mà hầu hết người dùng mới của nền tảng Linux thường gặp phải là không thể tìm thấy cách đơn giản nhất và hiệu quả nhất để tìm kiếm tập tin trên hệ thống của họ.

Linux, giống như hầu hết các hệ điều hành khác, sử dụng một số cơ chế để trả lời các truy vấn tìm kiếm cho người dùng. Hai tiện ích tìm kiếm tập tin phổ biến nhất được truy cập bởi người dùng được gọi là findlocate.

Bây giờ, điều quan trọng là lưu ý rằng cả hai quy trình tìm kiếm đều hoạt động rất tốt nhưng không kém phần quan trọng, trung tâm của bài viết này sẽ tập trung hơn vào tiện ích locate, đây là công cụ tiện lợi hơn trong hai công cụ vì nó sử dụng cách thuận tiện hơn để xử lý nhanh hơn các truy vấn do người dùng nhập vào.

Tiện ích locate hoạt động tốt hơn và nhanh hơn so với đối tác find vì thay vì tìm kiếm trên hệ thống tập tin khi bắt đầu tìm kiếm tệp tin - Điều mà find làm - locate chạy qua một cơ sở dữ liệu. Cơ sở dữ liệu này chứa các phần tập tin và đường dẫn tương ứng trên hệ thống của bạn.

Dưới đây là mười lệnh "locate" đơn giản để giúp bạn làm việc hiệu quả hơn với máy Linux của mình.

1. Sử dụng lệnh locate

Để tìm một tập tin bằng lệnh locate rất dễ dàng và đơn giản. Bạn chỉ cần gõ:

$ locate LAMP-Setup.odt

/home/tecmint/LAMP-Setup.odt
/home/tecmint/TecMint.com/LAMP-Setup.odt

2. Giới hạn Số kết quả tìm kiếm

Bạn có thể giới hạn số kết quả tìm kiếm để tránh sự trùng lặp với kết quả tìm kiếm của bạn bằng lệnh -n.

Ví dụ, nếu bạn chỉ muốn 20 kết quả từ truy vấn của bạn, bạn có thể gõ lệnh sau:

$ locate "*.html" -n 20

/home/tecmint/.config/google-chrome/Default/Extensions/aapocclcgogkmnckokdopfmhonfmgoek/0.9_0/main.html
/home/tecmint/.config/google-chrome/Default/Extensions/aohghmighlieiainnegkcijnfilokake/0.9_0/main.html
/home/tecmint/.config/google-chrome/Default/Extensions/felcaaldnbdncclmgdcncolpebgiejap/1.1_0/main.html
/home/tecmint/.config/google-chrome/Default/Extensions/kbfnbcaeplbcioakkpcpgfkobkghlhen/14.752.848_0/forge.html
/home/tecmint/.config/google-chrome/Default/Extensions/kbfnbcaeplbcioakkpcpgfkobkghlhen/14.752.848_0/src/popup.html
/home/tecmint/.config/google-chrome/Default/Extensions/nlipoenfbbikpbjkfpfillcgkoblgpmj/3.9.16_0/additional-feature.html
/home/tecmint/.config/google-chrome/Default/Extensions/nlipoenfbbikpbjkfpfillcgkoblgpmj/3.9.16_0/background.html
/home/tecmint/.config/google-chrome/Default/Extensions/nlipoenfbbikpbjkfpfillcgkoblgpmj/3.9.16_0/edit.html
/home/tecmint/.config/google-chrome/Default/Extensions/nlipoenfbbikpbjkfpfillcgkoblgpmj/3.9.16_0/help.html
/home/tecmint/.config/google-chrome/Default/Extensions/nlipoenfbbikpbjkfpfillcgkoblgpmj/3.9.16_0/options.html
/home/tecmint/.config/google-chrome/Default/Extensions/nlipoenfbbikpbjkfpfillcgkoblgpmj/3.9.16_0/popup.html
/home/tecmint/.config/google-chrome/Default/Extensions/nlipoenfbbikpbjkfpfillcgkoblgpmj/3.9.16_0/purchase.html
/home/tecmint/.config/google-chrome/Default/Extensions/nlipoenfbbikpbjkfpfillcgkoblgpmj/3.9.16_0/upload.html
/home/tecmint/.config/google-chrome/Default/Extensions/nlipoenfbbikpbjkfpfillcgkoblgpmj/3.9.16_0/oauth2/oauth2.html
/home/tecmint/.config/google-chrome/Default/Extensions/nmmhkkegccagdldgiimedpiccmgmieda/1.0.0.2_0/html/craw_window.html
/home/tecmint/.config/google-chrome/Default/Extensions/pkedcjkdefgpdelpbcmbmeomcjbeemfm/5516.1005.0.3_0/cast_route_details.html
/home/tecmint/.config/google-chrome/Default/Extensions/pkedcjkdefgpdelpbcmbmeomcjbeemfm/5516.1005.0.3_0/feedback.html
/home/tecmint/.config/google-chrome/Default/Extensions/pkedcjkdefgpdelpbcmbmeomcjbeemfm/5516.1005.0.3_0/cast_setup/devices.html
/home/tecmint/.config/google-chrome/Default/Extensions/pkedcjkdefgpdelpbcmbmeomcjbeemfm/5516.1005.0.3_0/cast_setup/index.html
/home/tecmint/.config/google-chrome/Default/Extensions/pkedcjkdefgpdelpbcmbmeomcjbeemfm/5516.1005.0.3_0/cast_setup/offers.html

Kết quả sẽ hiển thị 20 tập tin đầu tiên kết thúc bằng .html.

3. Hiển thị số bộ trùng khớp

Nếu bạn muốn hiển thị số lượng bộ trùng khớp của tệp "tecmint", sử dụng lệnh locate -c.

$ locate -c [tecmint]*

1550

4. Bỏ qua kết quả phân biệt hoa thường của Locate

Mặc định, lệnh locate được cấu hình để xử lý truy vấn theo cách phân biệt chữ hoa, có nghĩa là TEXT.TXT sẽ cho bạn kết quả khác với text.txt.

Để lệnh locate bỏ qua việc phân biệt chữ hoa và hiển thị kết quả cho cả truy vấn chữ hoa và chữ thường, gõ lệnh với tùy chọn -i.

$ locate -i *text.txt*

/home/tecmint/TEXT.txt
/home/tecmint/text.txt

5. Cập nhật cơ sở dữ liệu mlocate

Vì lệnh locate phụ thuộc vào một cơ sở dữ liệu có tên là mlocate. Cơ sở dữ liệu này cần được cập nhật đều đặn để công cụ lệnh hoạt động hiệu quả.

Để cập nhật cơ sở dữ liệu mlocate, bạn sử dụng một tiện ích được gọi là updatedb. Cần lưu ý bạn cần có đặc quyền của quản trị viên để làm việc này hoạt động chính xác, vì nó cần được thực thi với quyền root hoặc quyền sudo.

$ sudo updatedb

6. Chỉ hiển thị tệp tin có mặt trong hệ thống của bạn

Khi bạn có cơ sở dữ liệu mlocate được cập nhật, lệnh locate vẫn cho ra kết quả của các tệp tin mà bản thể đã bị xóa khỏi hệ thống của bạn.

Để tránh thấy kết quả của các tệp tin không có trong máy tính của bạn tại thời điểm nhập lệnh, bạn cần sử dụng lệnh locate -e. Quá trình này tìm kiếm trên hệ thống của bạn để xác minh sự tồn tại của tệp tin bạn đang tìm kiếm, ngay cả khi nó vẫn hiện diện trong mlocate.db.

$ locate -i -e *text.txt*

/home/tecmint/text.txt

7. Phân tách các mục Output không có xuống dòng mới

Mặc định của lệnh locate là ký tự xuống dòng (\n) là dấu phân tách. Nhưng nếu bạn muốn sử dụng một dấu phân tách khác như ASCII NUL, bạn có thể làm như vậy bằng cách sử dụng tùy chọn dòng lệnh -0.

$ locate -i -0 *text.txt*

/home/tecmint/TEXT.txt/home/tecmint/text.txt

8. Xem lại thống kê cơ sở dữ liệu locate

Nếu bạn đang nghi ngờ về tình trạng hiện tại của cơ sở dữ liệu mlocate.db, bạn có thể dễ dàng xem thống kê cơ sở dữ liệu locate bằng cách sử dụng lệnh -S.

$ locate -S

Database /var/lib/mlocate/mlocate.db:
	32,246 directories
	4,18,850 files
	2,92,36,692 bytes in file names
	1,13,64,319 bytes used to store database

9. Ẩn thông báo lỗi trong locate

Việc thường xuyên cố gắng truy cập cơ sở dữ liệu locate đôi khi sẽ tạo ra thông báo lỗi không cần thiết cho biết bạn không có đặc quyền cần thiết để truy cập root vào mlocate.db, vì bạn chỉ là một người dùng bình thường và không phải là Superuser yêu cầu.

Để loại bỏ hoàn toàn những thông báo này, sử dụng lệnh -q.

$ locate "\*.dat" -q*

10. Chọn một vị trí mlocate khác

Nếu bạn đang nhập truy vấn để tìm kết quả không có trong cơ sở dữ liệu mặc định mlocate và muốn nhận câu trả lời từ một cơ sở dữ liệu mlocate.db khác nằm ở một vị trí khác trên hệ thống của bạn, bạn có thể trỏ lệnh locate đến một cơ sở dữ liệu mlocate khác tại một phần khác của hệ thống của bạn với lệnh -d.

$ locate -d  

Lệnh locate có vẻ như một trong những tiện ích mà nó làm mọi thứ bạn yêu cầu mà không cần quá nhiều cố gắng nhưng thực tế, để quá trình duy trì hiệu suất của nó, mlocate.db cần được cung cấp thông tin thường xuyên. Không làm như vậy có thể làm cho chương trình trở nên ít hữu ích.