10 ví dụ về lệnh locate trên CentOS / Ubuntu / Debian / Fedora

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 cách đơn giản 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 nhiều cơ chế để trả lời các truy vấn tìm kiếm của người dùng. Hai công cụ tìm kiếm tập tin phổ biến nhất và được sử dụng bởi người dùng là lệnh "find" và "locate". Tuy nhiên, bài viết này tập trung nhiều hơn vào tiện ích lệnh locate trong Linux, vì nó là cách tiện lợi hơn trong hai công cụ này và sử dụng cách thức hiệu quả hơn để xử lý nhanh chóng các truy vấn được nhập bởi người dùng.

Tiện ích "locate" hoạt động tốt hơn và nhanh hơn so với "find" bởi vì thay vì tìm kiếm trên hệ thống tập tin khi một tìm kiếm được khởi chạy - điều mà "find" thực hiện - "locate" sẽ tìm kiếm thông qua một cơ sở dữ liệu. Cơ sở dữ liệu này chứa các phần nhỏ của các 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 trở nên hiệu quả hơn với máy Linux của mình.

Sử dụng lệnh locate

Sử dụng lệnh locate trong Linux để tìm kiếm một tập tin rất dễ dàng và đơn giản. Bạn chỉ cần gõ:

$ locate LAMP-Setup.odt

/home/phothongtin/LAMP-Setup.odt
/home/phothongtin/phothongtin.com/LAMP-Setup.odt

Giới hạn truy vấn tìm kiếm cho một số cụ thể

Bạn có thể giới hạn số lượng kết quả trả về trong tìm kiếm để tránh việc trùng lặp với kết quả tìm kiếm của bạn bằng cách sử dụng tùy chọn -n.

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

$ locate "*.html" -n 20

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

Hiển thị số lượng mục phù hợp

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

$ locate -c [phothongtin]*

1550

Bỏ qua phân biệt chữ hoa/chữ thường trong đầu ra của lệnh locate

Theo mặc định, lệnh locate trong Linux được cấu hình để xử lý các truy vấn theo phân biệt chữ hoa/chữ thường, điều này có nghĩa là "TEXT.TXT" sẽ cho kết quả khác với "text.txt".

Để lệnh "locate" bỏ qua sự phân biệt chữ hoa/chữ thường và hiển thị kết quả cho cả truy vấn viết hoa và viết thường, bạn có thể sử dụng tùy chọn -i.

$ locate -i *text.txt*

/home/phothongtin/TEXT.txt
/home/phothongtin/text.txt

Làm mới cơ sở dữ liệu mlocate

Vì lệnh "locate" dựa trên một cơ sở dữ liệu được gọi là mlocate, cơ sở dữ liệu này cần được cập nhật định kỳ để lệnh này hoạt động một cách hiệu quả.

Để cập nhật cơ sở dữ liệu mlocate, bạn sử dụng tiện ích gọi là "updatedb". Lưu ý rằng bạn cần có quyền superuser để làm việc này, vì nó cần được thực thi với quyền root hoặc sử dụng lệnh sudo.

$ sudo updatedb

Chỉ hiển thị các tệp có trong hệ thống của bạn

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

Để tránh hiển thị kết quả của các tệp tin không có mặt 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 sẽ 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 mà bạn đang tìm kiếm, ngay cả khi nó vẫn có trong cơ sở dữ liệu mlocate.db.

$ locate -i -e *text.txt*

/home/phothongtin/text.txt

Tách các mục kết quả đầu ra mà không có dấu xuống dòng mới

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

$ locate -i -0 *text.txt*

/home/phothongtin/TEXT.txt/home/phothongtin/text.txt

Xem lại cơ sở dữ liệu locate

Nếu bạn đang băn khoăn về trạng thái hiện tại của cơ sở dữ liệu mlocate.db của bạn, bạn có thể dễ dàng xem thống kê cơ sở dữ liệu locate bằng cách sử dụng tùy chọn -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

Ẩn thông báo lỗi trong lệnh "locate"

Việc thường xuyên cố gắng truy cập cơ sở dữ liệu locate của bạn đô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à người dùng thông thường và không phải là Superuser yêu cầu. Để hoàn toàn loại bỏ các thông báo này, bạn có thể sử dụng lệnh "-q".

$ locate "\*.dat" -q*

Chọn một vị trí khác cho cơ sở dữ liệu mlocate

Nếu bạn nhập các truy vấn để tìm kiếm kết quả không có trong cơ sở dữ liệu mặc định của 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ể chỉ định đường dẫn tới cơ sở dữ liệu mlocate.db khác bằng cách sử dụng tùy chọn "-d".

$ locate -d <new db path> <filename>

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