Lệnh locate
trong Linux là một công cụ tìm kiếm nhanh chóng các file và thư mục trên hệ thống dựa trên cơ sở dữ liệu được cập nhật trước đó. Các file được lập chỉ mục (index) trong cơ sở dữ liệu, giúp cho quá trình tìm kiếm trở nên nhanh chóng và hiệu quả hơn so với lệnh find
.
Khi chạy lệnh locate
, hệ thống sẽ truy vấn cơ sở dữ liệu để tìm kiếm các file và thư mục phù hợp với mẫu tìm kiếm. Kết quả trả về sẽ bao gồm tên và đường dẫn của các file và thư mục đó, tùy thuộc vào các tùy chọn được sử dụng trong lệnh locate
.
Lệnh locate
có thể được sử dụng để tìm kiếm bất kỳ file hoặc thư mục nào trên hệ thống, tuy nhiên để đảm bảo tính chính xác và tốc độ tìm kiếm, cơ sở dữ liệu của locate
chỉ được cập nhật định kỳ một lần mỗi ngày. Do đó, nếu một file mới được thêm vào hệ thống sau khi cơ sở dữ liệu đã được cập nhật, thì lệnh locate
sẽ không tìm thấy file đó cho đến khi cơ sở dữ liệu được cập nhật lại vào ngày tiếp theo.
Ví dụ sử dụng lệnh locate
để tìm kiếm tất cả các file có đuôi .txt
trên hệ thống:
locate *.txt
Chúng ta có thể sử dụng lệnh locate
để tìm kiếm tất cả các file có chứa từ khóa “example” trong toàn bộ hệ thống:
$ locate example
Kết quả trả về sẽ là danh sách các file và thư mục chứa từ khóa “example”. Ví dụ:
/usr/share/doc/examples
/usr/share/doc/examples/apt
/usr/share/doc/examples/apt/examples.list
/usr/share/doc/examples/apt/examples.sources.list
/usr/share/doc/examples/bash
/usr/share/doc/examples/bash/README
/usr/share/doc/examples/bash/bash_aliases
/usr/share/doc/examples/bash/bash_logout
/usr/share/doc/examples/bash/bash_profile
/usr/share/doc/examples/bash/bashrc
/usr/share/doc/examples/bashrc
/usr/share/doc/examples/bind9
/usr/share/doc/examples/bind9/db.0
/usr/share/doc/examples/bind9/db.127
/usr/share/doc/examples/bind9/db.empty
/usr/share/doc/examples/bind9/db.local
/usr/share/doc/examples/bind9/named.conf
/usr/share/doc/examples/bind9/named.conf.default-zones
/usr/share/doc/examples/bind9/named.conf.local
/usr/share/doc/examples/bind9/named.conf.options
...
Lưu ý rằng lệnh locate
sử dụng một cơ sở dữ liệu tìm kiếm được tạo trước đó, vì vậy nó không thể tìm kiếm file mới được tạo ra trên hệ thống. Chúng ta có thể cập nhật cơ sở dữ liệu tìm kiếm bằng cách sử dụng lệnh updatedb
.
Dưới đây là một số tùy chọn phổ biến được sử dụng với lệnh locate
trên Linux:
-i
: Tìm kiếm không phân biệt chữ hoa chữ thường.-r
: Sử dụng biểu thức chính quy trong tìm kiếm.-w
: Chỉ tìm kiếm những từ đúng phù hợp với từ khóa.-c
: Hiển thị số lượng kết quả tìm kiếm thay vì danh sách các kết quả.-n
: Giới hạn số lượng kết quả trả về.-L
: Tìm kiếm theo phân cách file, bao gồm tên file và đường dẫn file.
Ví dụ sử dụng tùy chọn -i
và -r
để tìm kiếm file test.txt
không phân biệt chữ hoa chữ thường và có chứa chuỗi “hello” trong tên:
locate -i -r ".*hello.*test\.txt$"
Đây là ví dụ về sử dụng tùy chọn -c
để đếm số lượng kết quả trả về khi tìm kiếm file có chứa chuỗi “abc” trong tên:
locate -c "abc"