Lệnh Find (tìm kiếm) trong Linux

Lệnh Find (tìm kiếm) trong Linux

Lệnh find trong Linux là một tiện ích mạnh mẽ dùng để tìm kiếm tệp tin hoặc thư mục dựa trên nhiều tiêu chí khác nhau như tên, loại, kích thước, ngày tháng và quyền. Nó thực hiện tìm kiếm theo thời gian thực, bắt đầu từ một thư mục được chỉ định.

Cú pháp cơ bản

Cú pháp chung là find [thư mục bắt đầu] [tùy chọn] [biểu thức].

Các thư mục bắt đầu phổ biến bao gồm:

  • ~ (dấu ngã): Tìm kiếm từ thư mục chính của bạn (home directory).
  • . (dấu chấm): Tìm kiếm từ thư mục hiện tại.
  • / (dấu gạch chéo): Tìm kiếm toàn bộ hệ thống, bắt đầu từ thư mục gốc.

Ví dụ về các lệnh find phổ biến

Dưới đây là một số cách sử dụng find phổ biến nhất:

Mô tảLệnhGiải thích
Tìm tệp theo tênfind /home/user -name filename.txtTìm kiếm tệp có tên filename.txt trong thư mục /home/user.
Tìm không phân biệt chữ hoa/thườngfind . -iname filename.txtTìm kiếm tệp trong thư mục hiện tại (.) khớp với filename.txt, bỏ qua phân biệt chữ hoa/thường (ví dụ: tìm thấy Filename.txtFILENAME.TXT, v.v.).
Tìm tệp theo phần mở rộngfind /path/to/dir -name "*.log"Sử dụng ký tự đại diện (*) để tìm tất cả các tệp có phần mở rộng là .log trong thư mục đã chỉ định.
Chỉ tìm thư mụcfind . -type d -name "project*"Tìm kiếm các mục có loại d (thư mục) bắt đầu bằng “project” trong thư mục hiện tại.
Chỉ tìm tệpfind . -type f -name "*.jpg"Tìm kiếm các mục có loại f (tệp) có phần mở rộng là .jpg trong thư mục hiện tại.
Tìm theo kích thướcfind . -size +10MTìm các tệp lớn hơn 10 Megabyte trong thư mục hiện tại. (Sử dụng c cho byte, k cho kilobyte, M cho megabyte, G cho gigabyte).
Tìm theo thời gian sửa đổifind . -mtime -7Tìm các tệp đã được sửa đổi trong vòng 7 ngày qua. (Sử dụng + cho các tệp đã sửa đổi cách đây hơn 7 ngày).
Tìm theo quyềnfind . -perm 644Tìm chính xác các tệp có quyền 644 trong thư mục hiện tại.
Tìm tệp/thư mục rỗngfind . -emptyLiệt kê tất cả các tệp và thư mục rỗng trong thư mục hiện tại.

Kết hợp find với các lệnh khác

Lệnh find thường được sử dụng với tùy chọn -exec để thực hiện một hành động trên các tệp mà nó tìm thấy.

  • Tìm và xóa tệp:
    find . -name "*.temp" -type f -delete hoặc find . -name "*.temp" -type f -exec rm {} \\;
  • Tìm tệp chứa văn bản cụ thể:
    find . -type f -exec grep -l "search pattern" {} \\;
    Lệnh này tìm các tệp (-type f) trong thư mục hiện tại và chạy grep để tìm “search pattern” (mẫu tìm kiếm) bên trong chúng, chỉ in ra tên tệp (-l).