Hướng dẫn sử dụng lệnh find trên máy chủ Linux

Nguyễn Thành Luân 6 phút đọc

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 matbao.txt
Kết quả:
./matbao.txt

Lệnh trên sẽ tìm tập tin có tên là matbao.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 "matbao*"

Kết quả:
./matbao2.txt
./matbao.txt
./matbao3.txt
./matbao1.txt
Lệnh trên sẽ tìm tất cả các tập tin có tên bắt đầu bằng “matbao” (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/matbao2.txt
/home/matbao.txt
/home/matbao3.txt
/home/matbao1.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.

find . -mmin -60

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 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.

Tìm kiếm nâng cao kết hợp với lệnh khác (rm, exec, cp, grep,..)

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 {} ;

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!