Có một số cách bạn có thể tìm và định vị các file từ terminal trong Linux. find
, locate
, which
và whereis
là một số lệnh thường được sử dụng để thực hiện việc này. Hãy cùng xem xét 4 lệnh tìm kiếm này để tìm ra những điểm tương đồng và khác biệt của chúng.
1. Lệnh find
Cách tiếp cận đơn giản để tìm kiếm các file trong bất kỳ thư mục được chỉ định nào là sử dụng lệnh find
. Nếu thư mục để thực hiện tìm kiếm không được chỉ định rõ ràng, thì việc tìm kiếm sẽ được thực hiện trên thư mục hiện hành.
Ảnh chụp màn hình sau đây cho thấy cách việc tìm kiếm được thực hiện cho tất cả các tên file kết thúc bằng phần mở rộng .txt trong thư mục hiện tại (.).
Việc tìm kiếm cũng có thể được thực hiện dựa trên timestamp (dấu thời gian), quyền đối với file, kích thước file, loại file, chủ sở hữu file, v.v... Biểu thức chính quy (Regular expression) có thể được sử dụng để kiểm soát các tham số tìm kiếm.
Xem thêm: Hướng dẫn sử dụng lệnh find trong Linux.
2. Lệnh locate
Lệnh này là một cách khác để tìm file theo tên. Lệnh trước tìm kiếm thư mục được chỉ định và sau đó cung cấp kết quả cho người dùng. Công cụ này thực hiện tìm kiếm dựa trên cơ sở dữ liệu có tên là mlocate.db, nằm trong /var/lib/mlocate/mlocate.db. Cơ sở dữ liệu này được cập nhật mỗi sáng bởi tiện ích cron.
Lệnh này thực thi nhanh hơn find vì tìm kiếm dựa vào cơ sở dữ liệu hiện, chịu trách nhiệm quản lý danh sách tất cả các file và thư mục trên hệ thống.
Lệnh locate
theo sau là tên file hiển thị tên đường dẫn tuyệt đối nơi file đó tồn tại.
Giả sử một script đã được tạo trong thư mục chính.
Nếu cố gắng xác định vị trí script mới được tạo và sao chép, bạn sẽ không nhận được bất kỳ đầu ra nào.
locate myscript
Vì cron chỉ cập nhật cơ sở dữ liệu vào buổi sáng, nếu có bất kỳ file nào được thêm vào hệ thống trong suốt cả ngày, cơ sở dữ liệu cần phải được cập nhật thủ công. Điều này có thể được thực hiện bằng cách sử dụng lệnh updateb
.
sudo updateb
Nếu cố gắng xác định vị trí script tùy chỉnh, nó sẽ có thể xác định vị trí file.
3. Lệnh which
Sau khi thảo luận về các lệnh để tìm kiếm file, chúng ta hãy chuyển sang một lệnh có thể giúp tìm kiếm đường dẫn tuyệt đối của những file thực thi trên hệ thống: which
.
Một file thực thi/script/ file nhị phân có thể có mặt ở nhiều vị trí trong hệ thống. Lệnh which
tìm kiếm trong các thư mục được chỉ định trong các biến môi trường $PATH và $MANPATH để tìm sự tồn tại của file thực thi được chỉ định.
Không có bất kỳ switch nào, lệnh which
sẽ hiển thị đường dẫn tuyệt đối đầu tiên được tìm thấy cho một file thực thi.
Switch -a hiển thị tất cả các lần xuất hiện của những đường dẫn tuyệt đối được tìm thấy cho file thực thi được chỉ định.
Những đường dẫn tuyệt đối cho nhiều file thực thi có thể được tìm thấy bằng cách chỉ định các file thực thi lần lượt.
4. Lệnh whereis
Lệnh whereis
là một lệnh khác để tìm file và được sử dụng để có được 3 thông tin liên quan đến một file thực thi:
- Đường dẫn tuyệt đối của file nhị phân
- Đường dẫn tuyệt đối nơi mã nguồn của file nhị phân đó tồn tại trên hệ thống
- Đường dẫn tuyệt đối của hướng dẫn tồn tại cho file nhị phân đó
Đối với bzgrep, file nhị phân tồn tại trong /bin và hướng dẫn tồn tại trong /usr/share/man/man1. Mã nguồn của nó không tồn tại trên hệ thống.
Lệnh whereis
có thể được hướng dẫn chỉ tìm kiếm đường dẫn tuyệt đối của file nhị phân bằng cách sử dụng switch -b. Việc tìm kiếm chỉ có thể thực hiện trong các thư mục được liệt kê sau switch -B. Các tên sau -f chỉ định tất cả các file nhị phân cần phải lấy thông tin.
Tương tự, việc tìm kiếm có thể được giới hạn chỉ cho mã nguồn hoặc hướng dẫn sử dụng, sử dụng các switch -s và -m. -S và -M theo sau là tên thư mục chỉ định các thư mục để tìm kiếm mã nguồn và hướng dẫn sử dụng tương ứng.
Switch -l sẽ cung cấp một danh sách chi tiết các đường dẫn tuyệt đối của tất cả các thư mục được sử dụng bởi whereis
để thực hiện tìm kiếm.