Lệnh find trên Linux là một trong những dòng lệnh quan trọng nhất và được sử dụng thường xuyên trong các hệ điều hành nhân Unix. Lệnh find được sử dụng để tìm kiếm danh sách các tập tin và thư mục dựa trên các điều kiện bạn chỉ định trong câu lệnh thông qua các tham số.
Find có thể được sử dụng trong nhiều điều kiện như bạn có thể tìm tập tin theo quyền hạn (chmod), người dùng (user), nhóm (group), loại tệp (file type), ngày (date), kích thước (size) và có thể các tiêu chí khác nữa.
Thông qua bài viết này, mình hy vọng chia sẻ kinh nghiệm sử dụng lệnh find dưới dạng các ví dụ mà bạn có thể áp dụng trong việc quản trị hệ thống chạy nhân Linux.
I. Các lệnh tìm kiếm cơ bản nhất
1. Tìm tập tin bằng tên trong thư mục hiện tại
Tìm tất cả các tệp có tên là nhatphuc.txt trong thư mục làm việc hiện tại.
# find . -name nhatphuc.txt ./nhatphuc.txt
2. Tìm tập tin trong thư mục home
Tìm tất cả các tập tin trong thư mục /home với tên nhatphuc.txt .
# find /home -name nhatphuc.txt /home/nhatphuc.txt
3. Tìm tập tin bằng tên và không phân biệt chữ hoa hay chữ thường
Tìm tất cả các tệp có tên là nhatphuc.txt và chứa cả chữ hoa và chữ nhỏ trong thư mục /home .
# find /home -iname nhatphuc.txt /home/nhatphuc.txt /home/Nhatphuc.txt
4. Tìm thư mục
Tìm tất cả các thư mục có tên là Nhatphuc trong thư mục gốc /
# find / -type d -name Nhatphuc /Nhatphuc
5. Tìm file có đuôi php theo tên
Tìm tất cả các tập tin có đuôi php có tên là nhatphuc.php trong thư mục làm việc hiện tại.
# find . -type f -name nhatphuc.php ./nhatphuc.php
6. Tìm tất cả các tập tin có đuôi php trong thư mục
Tìm tất cả các tập tin php trong một thư mục.
# find . -type f -name "*.php" ./nhatphuc.php ./index.php ./home.php
Tìm file dựa theo permission (quyền truy xuất file)
7. Tìm tập tin với phân quyền 777
Tìm tất cả các tệp có quyền là 777.
# find . -type f -perm 0777 -print
8. Tìm tấp cả tập tin không có quyền 777
Tìm tất cả các tập tin mà không được set quyền 777.
# find / -type f ! -perm 777
9. Tìm tập tin SGID với phân quyền 644
Tìm tất cả các tệp bit SGID có quyền được thiết lập là 644.
# find / -perm 2644
10. Tìm tập tin Sticky bit với phân quyền 551
Tìm tất cả các tập tin Sticky bit có quyền hạn được set là 551.
# find / -perm 1551
11. Tìm tập tin SUID
Tìm tất cả các tập tin SUID.
# find / -perm /u=s
12. Tìm tập tin SGID
Tìm tất cả các tập tin SGID.
# find / -perm /g=s
13. Tìm tập tin chỉ đọc
Tìm tất cả các tập tin chỉ đọc (read-only).
# find / -perm /u=r
14. Tìm tập tin thực thi (execute)
Tìm tất cả các tập tin có quyền thực thi.
# find / -perm /a=x
15. Tìm tất cả tập tin có quyền hạn là 777 và chuyển thành 644
Đây là một lệnh rất hay là quan trọng, thực hiện lệnh này sẽ giúp bạn tìm tất cả các tập tin có quyền 777 và sử dụng lệnh chmod để đặt quyền thành 644.
# find / -type f -perm 0777 -print -exec chmod 644 {} \;
16. Tìm tất cả thư mục có quyền hạn là 777 và thiết lập lại thành 755
Thêm một lệnh khác rất cần cho các bạn, lệnh này sẽ tìm tất cả các thư mục có quyền 777 nguy hiểm và sử dụng lệnh chmod để đặt quyền thành 755.
# find / -type d -perm 777 -print -exec chmod 755 {} \;
17. Tìm và xóa tập tin
Để tìm một tệp duy nhất được gọi là nhatphuc.txt và xóa nó.
# find . -type f -name "nhatphuc.txt" -exec rm -f {} \;
18. Tìm và xóa nhiều tập tin theo tên mở rộng
Để tìm và xóa nhiều tập tin như tất cả các tập tin có đuôi .jpg hoặc .txt , sau đó sử dụng.
# find . -type f -name "*.txt" -exec rm -f {} \; HOẶC # find . -type f -name "*.jpg" -exec rm -f {} \;
19. Tìm tất cả các tập tin trống
Để tìm tất cả các tập tin trống (không có nội dung) dưới đường dẫn nhất định, ví dụ dưới là thư mục gốc /
# find /tmp -type f -empty
20. Tìm tất cả các thư mục rỗng
Để tập tin tất cả các thư mục rỗng (không có tập tin hay thư mục con) theo đường dẫn nhất định. Ví dụ như /tmp.
# find /tmp -type d -empty
21. Tập tin tất cả các tập tin ẩn
Để tìm tất cả các tập tin ẩn trong thư mục /tmp, sử dụng lệnh dưới đây.
# find /tmp -type f -name ".*"
Tìm kiếm tập tin dựa trên quyền sở hữu và nhóm
22. Tìm tập tin dựa trên người dùng
Để tìm tất cả hoặc một tập tin duy nhất có tên nhatphuc.txt trong thư mục gốc với user được trao quyền là root.
# find / -user root -name nhatphuc.txt
23. Tìm tất cả tập tin dựa trên người dùng
Để tìm tất cả các tập tin thuộc về người dùng nhatphuc trong thư mục /home.
# find /home -user nhatphuc
24. Tìm tất cả tập tin dựa trên nhóm
Để tìm tất cả các tệp thuộc nhóm developer trong thư mục /home.
# find /home -group developer
25. Tìm tập tin đặc biệt của người dùng
Để tìm tất cả các tập tin .txt của người dùng nhatphuc trong thư mục /home.
# find /home -user nhatphuc -iname "*.txt"
Tìm tập tin và thư mục dựa trên ngày và thời gian
26. Tìm tập tin được sửa đổi 50 ngày qua
Tìm tất cả các tập tin được sửa đổi 50 ngày trở lại.
# find / -mtime 50
27. Tìm tập tin được truy cập 50 ngày qua
Tìm tất cả các tập tin được truy cập 50 ngày trở lại.
# find / -atime 50
28. Tìm tập tin được sửa đổi trong thời gian 50-100 ngày qua
Tìm tất cả các tập tin được sửa đổi hơn 50 ngày trở lại và dưới 100 ngày.
# find / -mtime +50 –mtime -100
29. Tìm tập tin được thay đổi trong 1 giờ qua (file changed)
Tìm tất cả các tập tin được thay đổi trong 1 giờ qua.
# find / -cmin -60
30. Tìm tập tin đã sửa đổi trong 1 giờ qua (file modified)
Để tìm tất cả các tệp được sửa đổi trong 1 giờ qua.
# find / -mmin -60
31. Tìm tập tin đã được truy cập trong 1 giờ qua
Tìm tất cả các tập tin đã được truy cập trong 1 giờ qua.
# find / -amin -60
Tìm tập tin và thư mục dựa trên kích thước
32. Tìm tập tin 50MB
Để tìm tất cả các tập tin có dung lượng 50MB, bạn hãy sử dụng lệnh bên dưới:
# find / -size 50M
33. Tìm tập tin kích thước trong khoảng từ 50MB – 100MB
Để tìm tất cả các tệp lớn hơn 50MB và dưới 100 MB, bạn dùng lệnh:
# find / -size +50M -size -100M
34. Tìm và xóa các tệp 100MB
Tìm tất cả các tệp 100MB và xóa chúng bằng một lệnh duy nhất.
# find / -type f -size +100M -exec rm -f {} \;
35. Tìm tập tin cụ thể và xóa
Tìm tất cả các tập tin có đuôi .mp3 có hơn 10MB và xóa chúng bằng một lệnh duy nhất.
# find / -type f -name *.mp3 -size +10M -exec rm {} \;
Hy vọng bài viết này sẽ giúp ích cho bạn trong việc thao tác trên server Linux. Nếu có thắc mắc gì cứ bình luận bên dưới nhé bạn!