Lệnh find là một trong những lệnh quan trọng trên Linux, cho phép bạn tìm kiếm và xử lý các file trong hệ thống file của Linux. Lệnh find được sử dụng để tìm kiếm các file theo một số tiêu chí nhất định như tên file, ngày thay đổi, kích thước và nhiều thuộc tính khác.
Cú pháp của lệnh find như sau:
find [đường dẫn...] [tham số] [tên file hoặc mẫu]
Trong đó:
- Đường dẫn: Đường dẫn đến thư mục bạn muốn tìm kiếm file trong đó. Nếu không được chỉ định, lệnh find sẽ tìm kiếm trong thư mục hiện tại và tất cả các thư mục con của nó.
- Tham số: Chỉ định các tham số bổ sung cho lệnh find.
- Tên file hoặc mẫu: Tìm kiếm file với tên cụ thể hoặc mẫu phù hợp với tên file.
Một số ví dụ về cách sử dụng lệnh find:
Phần 1. Tìm kiếm cơ bản
1. Tìm kiếm file theo tên file đầy đủ
root@terraform:~# find /home/learn-devops/note.sh
/home/learn-devops/note.sh
2. Tìm kiếm file theo tên không đầy đủ.
root@terraform:~# find /home/learn-devops/.gitlab*
/home/learn-devops/.gitlab-ci-gitlab-ok.yml
/home/learn-devops/.gitlab-ci-jenkins.yml
/home/learn-devops/.gitlab-ci-monitor-ok.yml
3. Tìm kiếm file với phần mở rộng.
root@terraform:~# find /home/learn-devops/ -name *.sh
/home/learn-devops/infrastructure/terraform/scripts/sshconfig.sh
/home/learn-devops/infrastructure/roles/k8s/k8s.sh
/home/learn-devops/build.sh
/home/learn-devops/packages/roles/gitlab.sh
/home/learn-devops/packages/roles/docker.sh
/home/learn-devops/packages/roles/nginx.sh
/home/learn-devops/packages/roles/guacamole.sh
/home/learn-devops/packages/roles/zabbix.sh
/home/learn-devops/packages/roles/ansible.sh
/home/learn-devops/packages/roles/jenkins.sh
/home/learn-devops/packages/roles/terraform.sh
4. Tìm kiếm file ẩn
root@terraform:~# find /home/learn-devops/ -type f -name ".*"
/home/learn-devops/.gitlab-ci-gitlab-ok.yml
/home/learn-devops/sourceweb/hoanghd.fun/.DS_Store
/home/learn-devops/sourceweb/demo.hoanghd.fun/assets/scss/bootstrap/js/tests/unit/.eslintrc.json
/home/learn-devops/sourceweb/demo.hoanghd.fun/.gitignore
/home/learn-devops/.gitlab-ci-jenkins.yml
/home/learn-devops/.gitignore
/home/learn-devops/.gitlab-ci-monitor-ok.yml
5. Tìm kiếm file có owner là hoanghd
root@terraform:~# find /home/learn-devops/ -user hoanghd
/home/learn-devops/
/home/learn-devops/infrastructure
/home/learn-devops/infrastructure/terraform
/home/learn-devops/infrastructure/terraform/variables.tf
6. Tìm kiếm file có group là hoanghd
root@terraform:~# find /home/learn-devops/ -group hoanghd
/home/learn-devops/
/home/learn-devops/infrastructure
/home/learn-devops/infrastructure/terraform
/home/learn-devops/infrastructure/terraform/variables.tf
/home/learn-devops/infrastructure/terraform/scripts
7. Tìm kiếm file được phân quyền 777
find /home/learn-devops/ -type f -perm 777
8. Tìm file chỉ có quyền read
find /home/learn-devops/ -perm /u=r
9. Tìm kiếm file rỗng
find /home/learn-devops/ -type f -empty
10. Tìm kiếm file được chỉnh sửa trong vòng 50 ngày
find /home/learn-devops/ -mtime 50
11. Tìm kiếm file được chỉnh sửa trong vòng 50 – 100 ngày
find /home/learn-devops/ -mtime +50 –mtime -100
12. Tìm kiếm file vừa được tạo ra trong vòng 1 giờ
find /home/learn-devops/ -cmin -60
13. Tìm kiếm file có dung lượng 50M
find /home/learn-devops/ -size 50M
14. Tìm kiếm file có dung lượng lớn hơn 50M nhỏ hơn 100M
find /home/learn-devops/ -size +50M -size -100M
15. Tìm thư mục có tên hoanghd
find /home/learn-devops/ -type d -name hoanghd
16. Tìm kiếm trên nhiều thư mục
find /home/learn-devops/ /usr/local/bin /var -name hoanghd.txt -type f
Phần 2. Tìm kiếm nâng cao, kết hợp với lệnh khác (rm, exec, cp, grep,..)
- Tìm và xoá file có dung lượng trên 100M
find /home/learn-devops/ -size +100M -exec rm -rf {} \;
18. Tìm và chmod 644 file có phần mở rộng là .html
find /home/learn-devops/ -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
find /home/learn-devops/ -type f -name "*.mp3" -exec cp {} /tmp/MusicFiles \;
20. Tìm file có chứa nội dụng hoanghd
find /home/learn-devops/ -type f -exec grep -l 'header-account-title' {} \;
21. Tìm file theo tên hoặc phần mở rộng hoặc kích thước (-o = OR)
find /home/learn-devops/ \( -name '*.txt' -o -name 'doc*' -o -size +5M \)