Lệnh find trong Linux: Cấu trúc lệnh và cách sử dụng

Bạn đang muốn tìm kiếm file, thư mục hay thứ gì đó trên Linux nhưng không nhớ ở đâu, tên cụ thể là gì hay làm sao để tìm khi có quá nhiều file na ná nhau? Tất cả sẽ được giải quyết bằng lệnh find trong Linux.

Lệnh find trong Linux: Cấu trúc lệnh và cách sử dụng

Cấu trúc của lệnh Find

Về cơ bản, chúng ta sẽ sử dụng cấu trúc chung như sau:

$ find [bắt đầu từ đâu] [biểu thức thực hiện việc cần làm] [-tùy chọn] [thứ tìm kiếm]

Trong đó, [-tùy chọn] sẽ bao gồm một số ý cơ bản như sau và bạn có thể tìm thêm trên các diễn đàn:

  • -user name: tên chủ sở hữu hoặc ID
  • -empty: tìm tệp trống
  • -name demo: tìm tên một tệp có chữ demo bên trong

Lệnh find trong Linux: Cấu trúc lệnh và cách sử dụng (1)

Với đặc trưng là giao diện dòng lệnh, Linux thực sự là một công cụ rất mạnh mẽ và linh hoạt trong việc tìm kiếm nhờ sự trợ giúp của grep, awk, Find và located. Nhờ những công cụ này mà bạn sẽ dễ dàng hơn trong việc tìm kiếm các tập tin, tìm kiếm văn bản trong file hoặc thay thế một từ nào đó. Trong khuôn khổ bài viết này, chúng ta sẽ tìm hiểu kỹ về cách sử dụng lệnh Find nhé!

Hướng dẫn sử dụng lệnh Find trên Linux

Để dễ dàng đọc hiểu hơn, chúng ta sẽ “quy định riêng” cách viết trong khuôn khổ bài viết này như sau nhé!

  • Tiêu đề: hiển thị nhóm lệnh có cùng một điểm chung
  • Dòng chữ có đánh số: hiển thị nội dung của code bên dưới
  • Code dùng để tìm kiếm

Tìm kiếm cơ bản

1. Tìm kiếm file theo tên file đầy đủ

# find . blogkdata.txt

Kết quả:

./blogkdata.txt

Lệnh trên sẽ tìm file có tên là blogkdata.txt ( dấu . đại diện cho thư mục hiện hành).

2. Tìm kiếm file theo tên không đầy đủ.

# find / -name blogkdata*

Kết quả:

/home/bloglkdata1.php

/var/blogkdataabc.rar

Lệnh trên sẽ tìm trên toàn bộ hệ thống file có tên bắt đầu bằng “blogkdata”

3. Tìm kiếm file với phần mở rộng.

# find /home -name *.php

Kết quả:

/home/blogkdata.php

/home/admin/login.php

Lệnh trên sẽ tìm trong thư mục /home những file có tên bất kỳ, miễn nó có phần mở rộng là .php

4. Tìm kiếm file ẩn

# find / -type f -name ".*"

Tìm kiếm dựa trên phân quyền và nhóm quyền

5. Tìm kiếm file thuộc sở hữu của blogkdata

# find /home -user blogkdata

Lệnh trên sẽ tìm kiếm tất cả những file trong thư mục home có chủ sở hữu là blogkdata

6. Tìm kiếm file có group là blogkdata

# find /home -group blogkdata

Lệnh trên sẽ tìm kiếm tất cả những file trong thư mục home có group là blogkdata

7. Tìm kiếm file được phân quyền 777

# find . -type f -perm 777

8. Tìm file chỉ có quyền read

# find / -perm /u=r

9. Tìm kiếm file rỗng

# find /tmp -type f -empty

Tìm kiếm dựa trên thời gian

10. Tìm kiếm file được chỉnh sửa trong vòng 50 ngày

# find / -mtime 50

11. Tìm kiếm file được chỉnh sửa trong vòng 50 - 100 ngày

# find / -mtime +50 –mtime -100

12. Tìm kiếm file vừa được tạo ra trong vòng 1 giờ

# find / -cmin -60

Tìm kiếm dựa trên dung lượng

13. Tìm kiếm file có dung lượng 50M

# find / -size 50M

14. Tìm kiếm file có dung lượng lớn hơn 50M nhỏ hơn 100M

# find / -size +50M -size -100M

15. Tìm thư mục có tên blogkdata

# find / -type d -name blogkdata

16. Tìm kiếm trên nhiều thư mục

# find /opt /usr /var -name blogkdata.txt -type f

Lệnh trên sẽ tìm kiếm trên các thư mục /opt /usr /var tập tin blogkdata.txt

17. Tìm và xóa file có dung lượng trên 100M

# find / -size +100M -exec rm -rf {} \;

Tìm kiếm dựa trên phần mở rộng/ nội dung

18. Tìm và chmod 644 file có phần mở rộng là .html

# find /usr/local -name "*.html" -type f -exec chmod 644 {} \;

19. Tìm file có phần mở rộng là .mp3 và copy file đó đến thư mục /tmp/MusicFiles

# find . -type f -name "*.mp3" -exec cp {} /tmp/MusicFiles \;

20. Tìm file có chứa nội dung blogkdata

# find /home -type f -exec grep -l ‘blogkdata’{} \;

Chúc bạn sử dụng thành thạo lệnh find trong Linux!