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ệnh | Giải thích |
|---|---|---|
| Tìm tệp theo tên | find /home/user -name filename.txt | Tì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ường | find . -iname filename.txt | Tì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.txt, FILENAME.TXT, v.v.). |
| Tìm tệp theo phần mở rộng | find /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ục | find . -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ệp | find . -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ước | find . -size +10M | Tì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 đổi | find . -mtime -7 | Tì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ền | find . -perm 644 | Tì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ỗng | find . -empty | Liệ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 -deletehoặcfind . -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ạygrepđể tìm “search pattern” (mẫu tìm kiếm) bên trong chúng, chỉ in ra tên tệp (-l).