in

35 ví dụ để hiểu lệnh find trên Linux

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!

Written by Linh Nguyễn

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments