Lệnh find trong Linux là công cụ dòng lệnh dùng để tìm kiếm file hoặc thư mục trong hệ thống theo nhiều điều kiện khác nhau như tên, loại, quyền, thời gian sửa đổi, dung lượng,… Trong bài viết này, mình sẽ cùng bạn tìm hiểu chi tiết về công dụng và cách sử dụng lệnh find chi tiết, nhanh chóng.
Những điểm chính
- Khái niệm: Hiểu rõ khái niệm và chức năng cốt lõi của lệnh
findtrong việc quét và truy vết file theo thời gian thực. - Công dụng chính: Nắm được các lợi ích của
findnhư khả năng truy vấn đa chiều, tự động hóa xử lý và tối ưu hiệu suất quản trị. - Cú pháp và tùy chọn: Thành thạo cấu trúc lệnh cơ bản và bảng các tùy chọn quan trọng.
- 8 ví dụ sử dụng thực tế: Học cách áp dụng
findvào các tình huống cụ thể như tìm theo tên, loại file, kích thước, thời gian, dọn dẹp file rác và kiểm tra bảo mật. - Sử dụng nâng cao với
xargs: Biết cách kết hợpfindvàxargsđể xử lý hàng loạt file lớn một cách tối ưu và an toàn. - Quản lý kết quả đầu ra: Nắm được kỹ thuật xuất kết quả ra file và lọc bỏ các thông báo lỗi để làm sạch dữ liệu tìm kiếm.
- Lưu ý khi sử dụng: Nhận biết các rủi ro khi dùng quyền root, tầm quan trọng của việc khoanh vùng tìm kiếm và kiểm tra trước khi thực thi.
- Câu hỏi thường gặp: Giải đáp các thắc mắc phổ biến liên quan đến lệnh find trong Linux
Lệnh find Linux là gì?
Find Linux là lệnh được sử dụng để tìm kiếm các file hoặc thư mục nằm sâu trong cấu trúc lưu trữ của hệ thống theo thời gian thực. Điểm mạnh của lệnh find nằm ở khả năng tạo ra các bộ lọc tìm kiếm chi tiết, thay vì chỉ tìm theo tên, người dùng có thể định vị chính xác đối tượng cần tìm dựa trên hàng loạt tiêu chí kỹ thuật như:
- Định danh: Tìm theo tên file.
- Dung lượng: Lọc file theo kích thước.
- Mốc thời gian: Tìm dựa trên ngày tạo, ngày sửa đổi nội dung hoặc ngày truy cập gần nhất.
- Thuộc tính hệ thống: Tìm theo quyền truy cập, người sở hữu hoặc loại file.
Lệnh find thường được ứng dụng khi người dùng làm việc với các hệ thống máy chủ có cấu trúc thư mục phức tạp và dữ liệu lớn. Lệnh này giúp người dùng nhanh chóng khoanh vùng dữ liệu cần thiết hoặc kết hợp với các lệnh khác để thực hiện các thao tác xử lý hàng loạt ngay sau khi tìm thấy file.

Công dụng chính của lệnh find trong Linux
Dưới đây là những công dụng chính mà công cụ này mang lại:
- Khả năng truy vấn dữ liệu đa chiều: Thay vì chỉ tìm kiếm theo tên gọi thông thường,
findcho phép người dùng thiết lập các bộ lọc chuyên sâu để định vị chính xác file mong muốn. Bạn có thể quét hệ thống dựa trên hàng loạt tiêu chí kỹ thuật như: Định dạng và kích thước file, mốc thời gian chi tiết, quyền sở hữu,… - Tự động hóa quy trình xử lý: Sau khi khoanh vùng được các file mục tiêu, lệnh file hỗ trợ thực thi trực tiếp các hành động như: Xóa bỏ file hàng loạt, sao chép hoặc di chuyển dữ liệu, đổi tên hoặc thay đổi quyền hạn của file,…
- Tối ưu hóa hiệu suất cho mọi đối tượng: Find giúp bạn tiết kiệm đáng kể thời gian thao tác, giảm thiểu sai sót và nâng cao hiệu quả quản trị hệ thống Linux một cách toàn diện.

Cú pháp sử dụng và các tùy chọn của lệnh find
Dưới đây là cú pháp của lệnh find:
find [ĐƯỜNG_DẪN] [TIÊU_CHÍ] [HÀNH_ĐỘNG]- [ĐƯỜNG_DẪN]: Vị trí thư mục bạn muốn bắt đầu tìm kiếm.
- [TIÊU_CHÍ]: Các tham số để lọc file như
-name,-size,-mtime,… - [HÀNH_ĐỘNG]: Thao tác cần thực hiện với file tìm được như xóa, di chuyển hoặc in ra màn hình,…
Để tối ưu hóa quá trình tìm kiếm, lệnh find cung cấp bộ lọc đa dạng giúp bạn khoanh vùng dữ liệu chính xác. Dưới đây là các tùy chọn quan trọng nhất mà bạn cần nắm vững:
| Tùy chọn | Chức năng | Ví dụ minh họa |
|---|---|---|
| -name PATTERN | Tìm kiếm dựa trên tên file, có phân biệt hoa thường. | find /etc -name "*.conf" |
| -type TYPE | Lọc theo loại đối tượng, giúp hệ thống xác định bạn đang muốn tìm file hay thư mục. | find . -type d -name "logs" |
| -size N | Tìm kiếm dựa trên kích thước file, bạn có thể dùng dấu + (lớn hơn) hoặc – (nhỏ hơn). | find /var/log -size +10M |
| -mtime N | Lọc theo thời gian sửa đổi nội dung. | find . -mtime -7 |
| -perm MODE | Lọc theo quyền truy cập. | find /tmp -perm 644 |
| -exec CMD {} ; | Thực thi một lệnh khác trên mỗi file tìm được. | find . -name "*.tmp" -exec rm {} \; |
| Hiển thị đường dẫn đầy đủ của file ra màn hình. | find /home -type f -print |
8 ví dụ sử dụng thực tế của lệnh find trong Linux
1. Tìm file theo tên cụ thể
Lệnh sau sẽ giúp xác định vị trí file cấu hình khi bạn chỉ nhớ tên file là nginx.conf bằng cách đệ quy qua /etc để tìm file nginx.conf:
find /etc -name "nginx.conf"
2. Tìm kiếm thư mục
Bạn có thể kết hợp tham số -type d để lọc ra các thư mục và loại bỏ các file nhiễu:
find /var -type d -name "logs"
3. Quản lý dung lượng đĩa
Để tìm tất cả các file có kích thước lớn hơn 100MB khi dọn dẹp ổ cứng, bạn thực hiện câu lệnh như sau:
find -type f -size +100M
4. Giám sát thay đổi hệ thống
Lệnh dưới đây sẽ giúp bạn tìm các file đã bị sửa đổi nội dung trong vòng 7 ngày qua (-7):
find /home/user -type f -mtime -7
5. Tự động dọn dẹp file rác
Để tìm và xóa các file tạm (.tmp), bạn thực hiện lệnh sau:
find /tmp -type f -name "*.tmp" -exec rm -v {} \;Trong đó:
-exec COMMAND {} \;: Cho phép chạy một lệnh bất kỳ trên từng file mà find tìm thấy.- {}: Là placeholder đại diện cho đường dẫn của từng file khớp điều kiện, mỗi lần lệnh find tìm được một file sẽ thay {} bằng đường dẫn thật của file đó trong lệnh
rm -v. - \;: Dấu chấm phẩy dùng để kết thúc phần lệnh
-execvà phải escape thành\;để shell không tự xử lý trước khi truyền cho find.

6. Kiểm tra bảo mật
Để tìm các file có quyền hạn cụ thể (ví dụ 644) nhằm đảm bảo tuân thủ chính sách bảo mật, bạn thực hiện lệnh sau:
find /var/www -type f -perm 644Kết quả sẽ hiển thị như sau:

Lệnh trên hỗ trợ lọc file theo permission để xem có file nào đang để quyền không đúng chuẩn policy, đồng thời quản lý security hoặc audit file để kiểm tra nhanh quyền file web nhằm tránh lộ mã nguồn, config quan trọng cho group/others.
7. Phân tích log nâng cao
Bạn có thể kết hợp với grep để tìm nội dung lỗi bên trong các file log tìm được với cú pháp lệnh như sau:
find /var/log -type f -name "*.log" | xargs grep "ERROR"Kết quả sẽ hiển thị tất cả log và lọc dòng có “ERROR”:

8. Di chuyển dữ liệu
Bạn thực thi lệnh sau để tìm file ảnh và tự động sao chép sang thư mục backup:
find /home/user -type f -name "*.jpg" -exec cp {} /backup/photos/ \;
Cách sử dụng lệnh find nâng cao với xargs
Khi xử lý số lượng file lớn lên tới hàng triệu file, việc sử dụng -exec có thể gây chậm hệ thống vì lệnh này phải khởi tạo một tiến trình mới cho mỗi file. Lúc này, bạn có thể kết hợp find và xargs với cú pháp lệnh như sau để tối ưu hiệu năng và đảm bảo an toàn cho dữ liệu:
find . -type f -name "*.tmp" -print0 | xargs -0 rm -v
Ưu điểm của giải pháp trên như sau:
- Hiệu năng tối ưu:
xargssẽ gom nhiều tên file lại và gửi cho lệnhrmxử lý trong một lần, điều này giúp giảm tải CPU đáng kể. - An toàn cho dữ liệu: Tham số
-print0và-0giúp bạn xử lý chính xác các file có chứa khoảng trắng hoặc ký tự đặc biệt trong tên, tránh lỗi xóa nhầm file.
Cách quản lý kết quả đầu ra hiệu quả
Dưới đây là cách lưu trữ và làm sạch dữ liệu tìm kiếm:
1. Xuất kết quả ra file
Bạn nên lưu danh sách tìm được vào một file văn bản để dễ dàng rà soát, báo cáo hoặc xử lý sau này.
Ví dụ thực tế: Bạn muốn liệt kê tất cả các file Excel (.xlsx) đã tải về thư mục Downloads để xem xét dọn dẹp và lưu danh sách này vào file danh_sach.txt. Để thực hiện, bạn sử dụng ký tự điều hướng > như sau:
find /home/myname/Downloads -name "*.xlsx" -type f > danh_sach.txtMàn hình sẽ không hiển thị thông tin, nhưng toàn bộ đường dẫn file tìm được đã nằm gọn trong danh_sach.txt.
2. Kỹ thuật lọc bỏ thông báo lỗi
Khi lệnh find quét qua các thư mục mà người dùng hiện tại không có quyền truy cập, màn hình sẽ xuất hiện hàng loạt thông báo lỗi dạng “Permission denied”. Để khắc phục, bạn thực thi cú pháp lệnh sau:
find /home/myname -name "*.conf" -type f 2>/dev/null > ket_qua_tim_kiem.txtGiải thích cơ chế:
2>/dev/null: Bắt tất cả các lỗi và loại bỏ.> ket_qua_tim_kiem.txt: Chỉ lưu lại những kết quả tìm kiếm thành công vào file.
Những lưu ý khi sử dụng lệnh find
Dưới đây là những lưu ý quan trọng để bạn tối ưu hiệu năng khi sử dụng lệnh find cũng như đảm bảo an toàn, tránh mất dữ liệu:
- Hạn chế lạm dụng quyền Root: Bạn nên hạn chế chạy lệnh
finddưới quyền root hoặcsudovì điều này sẽ cấp cho lệnh find khả năng truy cập và tác động toàn diện lên hệ điều hành, do đó một sai sót nhỏ trong cú pháp cũng có thể dẫn đến việc mất dữ liệu vĩnh viễn hoặc hỏng hệ điều hành. - Khoanh vùng phạm vi tìm kiếm: Bạn nên hạn chế việc tìm kiếm trên toàn bộ hệ thống vì hành động này sẽ buộc hệ thống phải quét qua hàng triệu file, gây tiêu tốn lượng lớn tài nguyên CPU và I/O ổ cứng. Do đó bạn hãy chỉ định thư mục cụ thể nhất có thể.
- Kiểm tra trước khi thực thi lệnh: Trước khi sử dụng tùy chọn
-execđể thực hiện các hành động như xóa (rm) hay di chuyển (mv), bạn hãy luôn chạy lệnhfindở chế độ hiển thị thông thường trước. Điều này giúp bạn xác nhận danh sách file tìm được là chính xác, tránh trường hợp xóa nhầm gây mất dữ liệu quan trọng.

Câu hỏi thường gặp
Làm thế nào để tìm kiếm file mà không phân biệt chữ hoa/thường?
Mặc định, lệnh find phân biệt chữ hoa và thường. Để bỏ qua sự phân biệt này, bạn hãy thay tham số -name bằng -iname.
Ví dụ:
find . -iname “logo.png”
Khi đó, bạn sẽ tìm thấy cả Logo.PNG, logo.png, LOGO.png.
Tại sao lệnh find chạy rất chậm trên các ổ đĩa lớn?
Lệnh find hoạt động theo cơ chế Real-time, duyệt qua từng thư mục trên ổ cứng ngay lúc bạn gõ lệnh để đảm bảo kết quả chính xác nhất. Do đó với ổ đĩa lớn, thao tác này sẽ tiêu tốn nhiều I/O.
Giải pháp thay thế: Nếu bạn chỉ cần tìm tên file và chấp nhận dữ liệu có thể không mới nhất, hãy dùng lệnh locate filename. Lệnh này tìm trong cơ sở dữ liệu index nên tốc độ nhanh, gần như tức thì.
Làm sao để ẩn hàng loạt thông báo lỗi “Permission denied” khi tìm kiếm?
Khi bạn chạy find từ thư mục gốc với tài khoản thường, hệ thống có thể sẽ báo lỗi khi cố truy cập vào các thư mục hệ thống. Để lọc bỏ các thông báo rác này, hãy chuyển hướng luồng lỗi vào /dev/null. Cú pháp thực thi lệnh như sau:
find / -name “config.php” 2>/dev/null
Lệnh find Linux là công cụ hữu ích trong việc tìm kiếm cơ bản đến các tác vụ quản trị phức tạp. Do đó, việc nắm vững các tùy chọn và kỹ thuật xử lý đầu ra sẽ giúp bạn làm chủ hệ thống một cách hiệu quả và an toàn hơn. Chúc bạn thao tác thành công và hẹn gặp lại bạn trong các bài viết tiếp theo.




