Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình Bash

Làm Chủ Lệnh 'locate' Linux: Hướng Dẫn Thực Tế Với Ví Dụ

Dưới đây là một công cụ khác cho hộp công cụ tìm kiếm tệp Linux của bạn – lệnh locate. Điều này giải thích cách sử dụng nó.

Lệnh locate được thiết kế đặc biệt để tìm tệp và thư mục theo tên của chúng. Nó dễ sử dụng và có thể tìm kiếm tệp bằng các mẫu (pattern). Điều này hữu ích nếu bạn đang tìm các tệp với loại/phần mở rộng tệp cụ thể.

Cài Đặt locate

locate có thể không được cài đặt sẵn trên hệ thống của bạn.

Để cài đặt trên các bản phân phối dựa trên Debian/Ubuntu, chạy:

sudo apt install mlocate

Hoặc trên Redhat/CentOS/Fedora:

sudo yum install mlocate

Cú Pháp Lệnh locate Linux

Lệnh locate rất nhanh. Đó là vì thay vì tìm kiếm trực tiếp hệ thống tệp, nó tìm kiếm một cơ sở dữ liệu các tệp được cập nhật định kỳ. Điều này làm cho việc tìm kiếm nhanh hơn nhiều.

Tuy nhiên, nó có nghĩa là nếu một tệp đã được di chuyển, đổi tên, hoặc xóa kể từ lần cuối cơ sở dữ liệu được làm mới, nó vẫn sẽ xuất hiện trong kết quả.

Mặc định, cơ sở dữ liệu dùng bởi locate để tìm tệp sẽ được lên lịch cập nhật hàng ngày, nhưng có thể kích hoạt cập nhật thủ công nếu bạn đã sắp xếp lại tệp và muốn thực hiện tìm kiếm trên bản ghi cập nhật.

Cập Nhật Cơ Sở Dữ Liệu

Để cập nhật cơ sở dữ liệu dùng bởi locate để tìm tệp, chạy:

sudo updatedb

Tìm Tệp

Cú pháp để tìm tệp dùng locate như sau:

locate OPTIONS PATTERN

Lưu ý rằng:

  • OPTIONS là tùy chọn và có thể cung cấp từ bảng dưới đây để thay đổi hành vi mặc định của lệnh locate
  • PATTERN là mẫu tên tệp phải khớp để được coi là kết quả khớp cho tìm kiếm
  • Kết quả cho các tệp khớp sẽ từ toàn bộ hệ thống tệp theo mặc định – không chỉ thư mục làm việc hiện tại
  • Nếu chưa có cơ sở dữ liệu được tạo cho lệnh locate dùng, bạn có thể được nhắc tạo một
  • Lệnh locate sẽ trả về mã trạng thái 0 nếu tìm thấy tệp khớp và 1 nếu không tìm thấy tệp hoặc xảy ra lỗi.

Tùy Chọn Lệnh

Dưới đây là một số tùy chọn thường dùng cho lệnh locate, lấy trực tiếp từ tài liệu chính thức:

Tùy chọn Mô tả
-b Chỉ khớp tên cơ sở (base name) với các mẫu được chỉ định.
-c Thay vì ghi tên tệp ra đầu ra chuẩn, chỉ ghi số lượng mục khớp.
-e Chỉ in các mục tham chiếu đến tệp tồn tại tại thời điểm locate chạy.
-i Bỏ qua phân biệt chữ hoa/thường khi khớp mẫu.
-l Thoát thành công sau khi tìm thấy LIMIT mục. Nếu tùy chọn –count được chỉ định, số đếm kết quả cũng bị giới hạn ở LIMIT.
-P Khi kiểm tra tệp có tồn tại (nếu tùy chọn –existing được chỉ định), không theo dõi symbolic link đuôi. Điều này khiến symbolic link hỏng được báo cáo như các tệp khác.
-q Không ghi thông báo về lỗi gặp phải khi đọc và xử lý cơ sở dữ liệu.
-r Tìm kiếm biểu thức chính quy cơ bản REGEXP. Không cho phép PATTERNs nếu tùy chọn này được dùng, nhưng tùy chọn này có thể chỉ định nhiều lần.
–regex Diễn giải tất cả PATTERNs như regex mở rộng.

Để xem danh sách đầy đủ tùy chọn, bạn có thể xem hướng dẫn sử dụng cho lệnh locate bằng cách chạy:

man locate

Ví Dụ Lệnh locate

Cách dùng cơ bản nhất cho hàm locate là tìm tệp khớp với một tên cho trước:

locate filename

Danh sách đường dẫn tệp cho mỗi tệp khớp trong hệ thống tệp sẽ được trả về.

Như đã giải thích ở trên, chính hệ thống tệp không được locate tìm kiếm – mà là một cơ sở dữ liệu lập chỉ mục hệ thống tệp và được cập nhật định kỳ được tìm kiếm. Điều này giữ cho mọi thứ nhanh nhưng có thể gây vấn đề nếu bạn vừa xong việc di chuyển một đống tệp và cơ sở dữ liệu chưa được cập nhật.

Tùy chọn -e sẽ buộc locate kiểm tra xem tệp vẫn còn tồn tại trong hệ thống tệp trước khi thêm vào danh sách kết quả:

locate -e filename

Điều này không giải quyết vấn đề tệp mới tạo hoặc di chuyển không có trong kết quả (hoặc xuất hiện ở vị trí cũ) nhưng giải quyết vấn đề tệp đã xóa xuất hiện trong kết quả.

Các mẫu có thể được cung cấp để bạn dễ dàng tìm kiếm theo phần mở rộng tệp:

locate *.mp3

Ví dụ trên sẽ trả về tất cả tệp mp3 tìm thấy trong cơ sở dữ liệu.

Lệnh locate phân biệt chữ hoa/thường theo mặc định – điều này có thể ghi đè bằng tùy chọn -i:

locate -i FILENAME

Bạn cũng có thể đếm số tệp khớp bằng tùy chọn -c:

locate -c filename