Lệnh find
trong Linux là một trong những công cụ command-line phổ biến nhất, được dùng để tìm kiếm và xác định vị trí các file hay thư mục. Bài viết này sẽ hướng dẫn chi tiết 35 trường hợp sử dụng lệnh find
trong Linux hiệu quả nhất, được chia thành 5 mục đích chính.
Tìm file theo tên bằng lệnh find trong Linux
1. Tìm file theo tên trong thư mục hiện tại
Giả sử ta cần tìm các file có tên text3.pdf trong thư mục đang làm việc:
find -name text3.pdf
2. Tìm file trong thư mục home
Tìm mọi file trong thư mục /home
có tên text2.pdf
.
find /home -name text2.pdf
3. Tìm file bằng tên, không phân biệt chữ hoa và chữ thường
find /home -iname text*.pdf
4. Tìm thư mục theo tên
Tìm mọi thư mục có tên text trong thư mục:
sudo find / -type d -name text
5. Tìm các file PHP theo tên
Tìm các file php
có tên vietnix.php
trong thư mục hiện tại:
find . -type f -name *php
6. Tìm mọi file PHP có trong thư mục
find . -type f -name "*.php"
# Output:
./vietnix.php
./login.php
./index.php
Tìm file dựa trên quyền truy cập
7. Tìm file có quyền 777
find .type f -perm 0777 -print
8. Tìm file không có quyền 777
find / -type f ! -perm 777
9. Tìm file SGID có quyền 644
find / -perm 2644
10. Tìm các file Sticky Bit có quyền 551
find / -perm 1551
11. Tìm file SUID
find / -perm /u=s
12. Tìm file SGID
find / -perm /g=s
13. Tìm các file chỉ được đọc (Read-only)
find / -perm /u=r
14. Tìm các file thực thi được
find /-perm /a=x
15. Tìm file có quyền 777 và thay đổi thành 644
Ta cũng có thể kết hợp việc tìm những file có quyền 777
, sau đó dùng lệnh chmod
để đặt quyền thành 644
như sau.
find / -type f -perm 0777 -print -exec chmod 664 {} \;
16. Tìm file có quyền 777 rồi đặt thành 755
Tương tự như trên, ta cũng có thể tìm file có quyền 777
rồi dùng chmod để chuyển thành 755
:
find / -type d -perm 777 -print -exec chmod 755 {} \;
17. Tìm và xóa từng file đơn lẻ
Giả sử ta cần xóa một file vietnix.txt
thì có thể tìm rồi xóa nó như sau:
find .type f -name "vietnix.txt" -exec rm -f {} \;
18. Tìm và xóa nhiều file
Ví dụ ta cần xóa các file .mp3
và .txt
:
find . -type f -name "*.txt" -exec rm -f {} \;
# HOẶC
find . -type f -name "*.mp3" -exec rm -f {} \;
19. Tìm các file rỗng
find /tmp -type f -empty
20. Tìm các thư mục rỗng
sudo find /tmp -type d -empty
21. Tìm các file ẩn
sudo find /tmp -type f -name ".*"
Tìm file dựa trên chủ sở hữu và nhóm
22. Tìm một file dựa trên user
Để tìm các file có tên text*.pdf
, trong thư mục root
và có quyền sở hữu thuộc về user root
:
sudo find / -user root -name text*.pdf
23. Tìm mọi file dựa trên user
Để tìm tất cả các file thuộc về user Vietnix
trong thư mục /home
:
find /home -user tecmint
24. Tìm mọi file dựa trên nhóm
Để tìm các file thuộc về nhóm Developer trong thư mục /home
:
find /home -group developer
25. Tìm các file xác định của người dùng
Để tìm mọi file /txt
của người dùng Vietnix
trong thư mục /home
:
find /home -user vietnix -iname ".txt"
Tìm file và thư mục dựa theo thời gian
26. Tìm file được chỉnh sửa trong 50 ngày gần nhất
sudo find /-mtime 50
Trong đó ta có thể thay số 50 thành những khoảng thời gian khác tùy ý.
27. Tìm file được truy cập trong 50 ngày gần nhất
find / -atime 50
Tương tự, ta cũng có thể thay đổi 50 thành các mốc thời gian khác.
28. Tìm file được chỉnh sửa trong 50-100 ngày gần nhất
Để tìm những file đã được chỉnh sửa ít nhất 50 ngày trước, nhưng không quá 100 ngày:
find / -mtime +50 -mtime -100
Ta cũng có thể đổi 50 và 100 thành những khoảng tìm kiếm khác.
29. Tìm file được thay đổi trong 1 giờ gần nhất
find / -cmin -60
30. Tìm file được chỉnh sửa trong 1 giờ gần nhất
find / -mmin -60
31. Tìm file được truy cập trong 1 giờ gần nhất
find / -amin 60
Tìm file và thư mục dựa trên kích thước
32. Tìm file có kích thước đúng 50MB
find / -size 50M
33. Tìm file có kích thước nằm trong khoảng 50-100MB
sudo find / -size +50M -size -100M
Lệnh ở trên sẽ tìm những file có kích thước lớn hơn 50MB nhưng nhỏ hơn 100MB.
34. Tìm và xóa các file có kích thước 100MB
Ta có thể kết hợp lệnh rm
và lệnh find
trong Linux để xóa những file có kích thước xác định như sau:
find / -type f -size +100M -exec rm -f {} \;
35. Tìm và xóa các file xác định
Để tìm những file .mp3
có kích thước lớn hơn 10MB:
find / -type f -name *.mp3 -size +10M -exec rm {} \;
Lời kết
Bài viết này đã cung cấp các trường hợp phổ biến nhất khi sử dụng lệnh find
trong Linux, cũng như một số cách kết hợp đơn giản với các lệnh khác để làm việc với file trong terminal thuận tiện hơn. Chúc các bạn thành công!