Lenh find trong linux

Lệnh find trong Linux là một dòng lệnh có khả năng tìm kiếm các tệp, thư mục, tên, ngày tạo, ngày sửa đổi, chủ sở hữu và quyền,… Bạn có thể thực hiện các hoạt động khác trên các tệp hoặc thư mục đã được tìm kiếm sau đó bằng ‘-exec‘.

Dưới đây là cú pháp cũng như cách sử dụng lệnh find qua ví dụ. Hãy cùng BKHOST theo dõi.

Cú pháp lệnh

$ find [where to start searching from]
[expression determines what to find] [-options] [what to find]

Các tùy chọn:
  • -exec CMD: Tệp đã đủ tiêu chí và về trạng thái 0 để hoàn thành lệnh.
  • -ok CMD: Khá giống -exec nhưng khác về phần người dùng đầu tiên.
  • -inum N: Tìm tên tệp có số inode ‘N’.
  • -links N: Tìm các tệp có liên kết “N”.
  • -name demo: Tìm các tệp mà demo chỉ định.
  • -newer file: Tìm các tệp đã được sửa trước đó hoặc được tạo sau.
  • -perm octal: Tìm tệp có quyền octal.
  • find0: Dựa vào tiêu chí để cho ra link của tệp đã tìm.
  • find1: Tìm các tệp và thư mục trống.
  • find2: Tìm các tệp theo kích thước được chỉ định: -N < N < +N
  • find3: Tìm kiếm các tệp theo tên người sử dụng hoặc thông qua ID người dùng.
  • find4: Kết hợp các tiêu chí với OR hoặc AND.! expr : Đúng nếu ‘expr’ là sai.

Cách sử dụng lệnh find

Ví dụ về hệ thống phân cấp:

Tìm kiếm theo tên file

find5
Sau khi tìm kiếm bạn sẽ nhận được các tệp với đuôi “.txt” nằm ở mục GFG như dưới đây:

Tìm kiếm nhiều file có đuôi giống nhau

find6
Tương tự như mục tìm kiếm bằng tên, các tệp bạn nhận được sẽ có đuôi “find7”:

Làm thế nào để tìm và xóa file có xác nhận.

find8
Nếu bạn không thích đuôi “find7” và muốn xóa nó đi, chỉ cần nhập ‘-exec0‘. Thường thì sau khi bạn nhập lệnh ở phía trên, sẽ có một thông báo hỏi bạn rằng có muốn bỏ mẫu “find7” hay không và bạn chỉ cần xác nhận.

Tìm kiếm các tệp và thư mục trống.

-exec2
Khi sử dụng lệnh này, bạn sẽ nhận được các tệp trống nằm trong directory hoặc sub-directories.

Tìm kiếm tệp với các quyền [permission]

-exec3
Nếu đó là các tệp nằm trong GFG directory hay là các sub-directory đã được cấp quyền thì bạn sẽ nhập được chúng thông qua lệnh này.

Tìm kiếm văn bản trong file.

-exec4
Ở lệnh này, bạn sẽ thấy được ở mỗi dòng lệnh đều có ‘-exec5‘. Một số lại có ‘-exec6‘ ở đầu dòng.

Tổng kết

Trên đây là cách sử dụng lệnh find trong Linux cơ bản nhất.

Nếu còn gặp bất cứ vướng mắc gì về nội dung bài viết trên, hãy để lại ở bên bình luận bên dưới, BKHOST sẽ trả lời bạn trong thời gian sớm nhất.

P/s: Bạn cũng có thể truy cập vào Blog của BKHOST để đọc thêm các bài viết chia sẻ kiến thức về lập trình, quản trị mạng, website, domain, hosting, vps, server, email,… Chúc bạn thành công.

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

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 . -name "matbao*"
0

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 . -name "matbao*"
1

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 . -name "matbao*"
2

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 . -name "matbao*"
3

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 . -name "matbao*"
4

Tìm kiếm tập tin hoặc thư mục kết hợp với lệnh cp

# find . -name "matbao*"
5

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 . -name "matbao*"
6

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 "matbao*"
7

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 . -name "matbao*"
8

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 . -name "matbao*"
9

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:

Chủ Đề