Bài viết này nhằm giúp bạn có một cái nhìn tổng quát về lệnh find – một lệnh tìm kiếm rất mạnh mẽ và phổ biến trên Linux giúp bạn cải thiện quá trình tìm kiếm và xử lý tập tin, thư mục với các tuỳ biến. Sau đây là một số ví dụ đơn giản thường được sử dụng.
Tìm kiếm cơ bản
Tìm kiếm tập tin hoặc thư mục theo tên đầy đủ
# find . -name example.txt
Kết quả:
Lệnh trên sẽ tìm tập tin có tên là example.txt (dấu . đại diện cho thư mục hiện hành).
Tìm kiếm file theo tên không đầy đủ.
# find . -name "example*"
Kết quả:
./example2.txt
./example.txt
./example3.txt
./example1.txt
Lệnh trên sẽ tìm tất cả các tập tin có tên bắt đầu bằng “example” (dấu . đại diện cho thư mục hiện hành).
Tìm kiếm tập tin với phần mở rộng.
# find /home -name "*.txt"
Kết quả:
/home/example2.txt
/home/example.txt
/home/example3.txt
/home/example1.txt
Lệnh trên sẽ tìm tất cả các tập tin có phần mở rộng là “.txt”.
Tìm kiếm tập tin ẩn
# find /home -type f -name ".*"
Lệnh trên sẽ tìm kiếm tất cả các tập tin ẩn trong thư mục /home
Tìm kiếm tập tin hoặc thư mục theo chủ sở hữu (owner)
# find /home -type d -user admin
Lệnh trên sẽ tìm kiếm tất cả các thư mục có chủ sở hữu (owner) là “admin”. Để tìm kiếm tập tin, bạn có thể thay biến “type d” thành “type f”.
Tìm kiếm tập tin hoặc thư mục theo phân quyền
# find /home/ -type f -perm /u=x
Lệnh trên sẽ tìm các tập tin trong thư mục /home chỉ có quyền thực thi.
# find . -type f -perm 644
Lệnh trên sẽ tìm kiếm các tập tin được phân quyền 644 trong thư mục hiện hành
Tìm kiếm tập tin rỗng
# find /tmp -type f -empty
Lệnh trên sẽ tìm kiếm tất cả các file rỗng trong thư mục /tmp
Tìm kiếm tập tin hoặc thư mục được chỉnh sửa trong một số ngày nhất định.
# find . -mtime 8
Lệnh trên sẽ tìm kiếm tất cả các tập tin và thư mục được chỉnh sửa trong vòng 8 ngày gần nhất trong thư mục hiện hành.
# find . -mtime +5 -mtime -8
Lệnh trên sẽ tìm kiếm tất cả các tập tin và thư mục được chỉnh sửa khoảng từ 5 đến 8 ngày gần nhất trong thư mục hiện hành.
Tìm kiếm tập tin hoặc thư mục theo giờ.
find . -cmin -60
Lệnh trên sẽ tìm kiếm tất cả các tập tin và thư mục được khởi tạo trong 1 giờ gần nhất trong thư mục hiện hành.
Tìm kiếm tập tin hoặc thư mục theo dung lượng
# find /home -size 50M
Lệnh trên sẽ tìm kiếm tất cả các tập tin và thư mục có kích thước 50 MB trong thư mục /home.
# find /home -size +50M -size -100M
Lệnh trên sẽ tìm kiếm tất cả các tập tin và thư mục có kích thước từ 50 – 100 MB trong thư mục /home.
Liệt kê những tập tin có dung lượng lớn nhất
# find / -type f -print0 | xargs -0 du -h | sort -rh | head -n 10
# find / -type f -exec du -Sh {} + | sort -rh | head -n 10
Hai lệnh trên sẽ liệt kê 10 tập tin có dung lượng lớn nhất trong thư mục / (sắp xếp từ lớn đến nhỏ).
Tìm kiếm nâng cao kết hợp với lệnh khác (rm, exec, cp, grep,..)
Liệt kê và sắp xếp danh sách những file có dung lượng lớn nhất trong thư mục.
# find / -type f -exec du -Sh {} + | sort -rh | head -n 10
Lệnh trên sẽ liệt kê và sắp xếp 10 file có dung lượng lớn nhất trong thư mục /
Tìm kiếm và xóa tất cả các tập tin và thư mục có dung lượng lớn hơn 100 MB
# find / -size +100M -exec rm -rf {} ;
Lệnh trên tìm kiếm tất cả các tập tin có phần mở rộng “.txt” sau đó copy vào thư mục /tmp
Tìm kiếm tập tin hoặc thư mục kết hợp với lệnh cp
# find . -type f -name "*.txt" -exec cp {} /tmp/ ;
Lệnh trên tìm kiếm tất cả các tập tin có phần mở rộng “.txt” sau đó copy vào thư mục /tmp
Tìm kiếm tập tin theo từ khóa trong nội dung
# find . -type f -exec grep -l 'test' {} ;
Lệnh trên sẽ tìm kiếm tất cả các tập tin ở thư mục hiện hành có từ “test” trong nội dung. Tìm kiếm tập tin hoặc thư mục theo tên hoặc phần mở rộng hoặc kích thước (-o = OR).
# find . ( -name '*.dat' -o -name 'matbao*' -o -size +5M )
Lệnh trên sẽ tìm kiếm tất cả các tập tin (thư mục) có phần mở rộng “.dat” hoặc tên bắt đầu bằng “matbao” hoặc có kích thước lớn hơn 5 MB.
Tìm kiếm và kết hợp phân quyền hàng loạt cho tập tin, thư mục.
# find /home -type d -exec chmod 755 {} ;
Lệnh trên sẽ tìm kiếm và phân quyền 755 cho tất cả các thư mục (kể cả thư mục con) bên trong thư mục /home.
# find /home -type f -exec chmod 644 {} ;
Lệnh trên sẽ tìm kiếm và phân quyền 644 cho tất cả các tập tin bên trong thư mục /home.
Trên đây là một số ví dụ cơ bản, bạn có thể tìm hiểu thêm cú pháp sử dụng của lệnh find bằng cách nhập lệnh sau:
# find --help
Chúc bạn thực hiện thành công.
Để lại một phản hồi