Linux FIND Command với các ví dụ

Bạn có biết có bao nhiêu tệp trong một bản cài đặt mới của Linux không? Nếu bạn sử dụng PopOS! Bản phân phối Linux(Linux distribution) là một ví dụ, có hơn 31.000 tệp. Đó là trước khi bạn bắt đầu tạo bất kỳ tài liệu nào, lưu trữ nhạc, tải xuống tệp PDF(PDFs) hoặc sắp xếp hình ảnh.

Do đó, việc tìm kiếm tệp hoặc thư mục phù hợp trong Linux khi bạn cần sẽ trở thành một thách thức. Trong bài viết này, bạn sẽ học cách sử dụng lệnh FIND của Linux(Linux FIND) và chúng tôi sẽ cung cấp cho bạn tất cả các ví dụ có thể.

Cú pháp lệnh FIND trong Linux(Linux FIND Command Syntax)

Cú pháp đề cập đến cách các từ hoặc lệnh được ghép lại với nhau. Giống(Just) như một câu bình thường có thể trở nên vô nghĩa nếu chỉ xáo trộn các từ, các lệnh có thể bị lỗi nếu chúng không được sử dụng theo cú pháp thích hợp.

tìm [đường dẫn] [điều kiện] [hành động](find [path] [conditions] [actions])

Đây là ý nghĩa của điều đó:

find - khởi chạy tiện ích Find trong (Find)Linux

con đường(path ) - nơi để tìm

điều kiện(conditions ) - đối số bạn muốn áp dụng cho tìm kiếm

hành động(actions ) - những gì bạn muốn làm với kết quả

Một ví dụ đơn giản sử dụng cả ba sẽ như sau:

tìm thấy . -name file-sample.rtf -print(find . -name file-sample.rtf -print)

Như bạn đoán, điều này sẽ tìm thấy tên tệp file-sample.rtf(file-sample.rtf)

Đường dẫn dấu chấm ( . ) Cho biết tìm kiếm trong thư mục hiện tại và bất kỳ thư mục nào bên trong nó. 

Điều kiện -name cho biết tìm để lấy tệp với tên cụ thể đó.

Hành động -print yêu cầu FIND hiển thị kết quả trên màn hình.

Dấu chấm và dấu là mặc định cho lệnh tìm. Vì vậy, nó vẫn sẽ làm điều tương tự nếu bạn không sử dụng chúng. Vì vậy, find -name file-sample.rtf sẽ cho bạn kết quả tương tự.

Linux TÌM HIỂU trong một thư mục khác(Linux FIND In Another Directory)

Bạn có thể tìm kiếm trong một thư mục khác với thư mục bạn đang ở. Chỉ cần(Just) chèn đường dẫn đến thư mục sau khi TÌM(FIND) . Nếu bạn đang ở gốc và bạn biết tệp nằm ở đâu đó trong thư mục home/user mà bạn sẽ sử dụng:

find home/user -name file-sample.rtf

Nó vẫn là một tìm kiếm đệ quy, vì vậy nó sẽ đi qua mọi thư mục của người dùng(user) .

Linux TÌM KIẾM Nhiều Thư Mục(Linux FIND Search Multiple Directories)

Nếu bạn muốn tìm kiếm trong nhiều thư mục cùng một lúc, chỉ cần liệt kê chúng trong lệnh, cách nhau bằng dấu cách.

find /lib /var /bin -name file-sample.rtf

Linux TÌM không có đệ quy hoặc giới hạn đệ quy(Linux FIND with No Recursion or Limiting Recursion)

Nếu bạn đã sử dụng lệnh FIND ở trên ở cấp cơ sở, lệnh này sẽ xem xét mọi thư mục trên hệ thống. Vì vậy, nếu bạn chỉ muốn dính vào thư mục hiện tại, hãy sử dụng tùy chọn -maxdepth . Con số sau -maxdepth cho biết Tìm bao nhiêu để đi sâu trước khi dừng lại. 

Sử dụng -maxdepth 1 có nghĩa là chỉ thư mục này. 

find -name file-sample.rtf -maxdepth 1

Sử dụng -maxdepth 2 hoặc số lớn hơn có nghĩa là đi sâu hơn nhiều cấp độ đó.

find -maxdepth 5 -name file-sample.rtf

Ví dụ về ký tự đại diện Linux FIND(Linux FIND Wildcard Example)

Lệnh FIND sử dụng dấu hoa thị ( * ) làm ký tự đại diện. Sử dụng nó cho bất kỳ phần nào của tên mà bạn không chắc chắn. Nó có thể được sử dụng nhiều hơn một lần trong tên. Không có loại tệp như một phần của tên tệp, kết quả cũng sẽ bao gồm các thư mục phù hợp.

find home/user -name file*sample*

Ví dụ Linux FIND by Type(Linux FIND by Type Example)

Để chỉ tìm kiếm một tệp hoặc một thư mục, hãy sử dụng tùy chọn -type và bộ mô tả thích hợp. Có một số, nhưng tệp và thư mục là phổ biến nhất:

f - tập tin

d - thư mục

b - khối thiết bị

c - thiết bị ký tự

l - liên kết tượng trưng

s - ổ cắm

find home/user -name file*sample* -type d

Ví dụ không phân biệt chữ hoa chữ thường trên Linux FIND(Linux FIND Case Insensitive Example)

Không giống như Windows , Linux quan tâm đến việc một chữ cái là viết hoa hay viết thường. Vì vậy, nếu bạn muốn nó tìm kiếm cả File-Sample.rtf và file-sample.rtf, hãy sử dụng tùy chọn -iname .

find home/user -iname File-Sample.rtf

Linux TÌM MỘT SỐ Tệp Ví dụ(Linux FIND Several Files Example)

Giả sử bạn muốn tìm các phiên bản .rtf và .html của một tệp. Điều đó có thể được thực hiện trong một lệnh bằng cách sử dụng toán tử -o (hoặc). Trong một số bản phân phối, bạn có thể cần đặt tên bên trong dấu ngoặc, như (-name file-sample.rtf -o -name file-sample.html)

find home/user -name file-sample.rtf -o -name file-sample.html

Linux TÌM các tệp không khớp với tên(Linux FIND Files That Don’t Match a Name)

Có lẽ bạn biết rằng có phiên bản .html của một tệp, nhưng không phải nếu có những phiên bản khác. Bạn có thể lọc phiên bản .html ra khỏi tìm kiếm bằng cách sử dụng tùy chọn -not .

find home/user -name file-sample* -not -name *.html

Linux TÌM mà không có kết quả lỗi(Linux FIND Without Error Results)

Trong ví dụ tìm không có đệ quy, hãy lưu ý rằng nó liệt kê mọi thư mục mà nó không thể tìm kiếm và kết quả chính xác. Thật là khó chịu. Hãy ngăn nó hiển thị tất cả các thư mục “ Quyền(Permission) bị từ chối” đó. Kết hợp nó với một lệnh đầu cuối Linux(Linux terminal command) khác , grep. Bạn cũng có thể sử dụng Tìm(Find) bằng grep để tìm các tệp có các từ cụ thể trong đó(find files with specific words in them) .

find -maxdepth 5 -name file-sample.rtf 2>&1 | grep -v “Permission denied”

Hãy chia nhỏ 2>&1 .

2 - đại diện cho stderr , viết tắt của đầu ra lỗi tiêu chuẩn. 

1 - đại diện cho stdout , viết tắt của đầu ra tiêu chuẩn

> - có nghĩa là chuyển hướng bất kỳ đầu ra nào ở bên trái của nó sang bất kỳ đầu ra nào ở bên phải của nó.

& - có nghĩa là ghép lại với nhau.

Vì vậy, 2>&1 có nghĩa là lấy các lỗi tiêu chuẩn và chuyển hướng chúng, sau đó đặt chúng cùng với đầu ra tiêu chuẩn thành một đầu ra.

Bây giờ chúng ta hãy nhìn vào | grep -v “Permission denied” .

| (được gọi là đường ống) - yêu cầu Linux cung cấp kết quả của bất kỳ thứ gì ở bên trái của nó cho bất kỳ thứ gì ở bên phải của nó. Nó được đưa vào lệnh grep.

grep - là một tiện ích tìm kiếm văn bản. 

-v - ra lệnh cho grep tìm kiếm bất kỳ thứ gì không khớp với văn bản ở bên trái của -v. Trong trường hợp này, nó ra lệnh cho grep chỉ tìm bất kỳ thứ gì không chứa văn bản hoặc chuỗi, " Quyền(Permission) bị từ chối". Vì vậy, grep sẽ chỉ hiển thị cho bạn kết quả bạn đang tìm kiếm và bất kỳ lỗi nào không khớp với “ Quyền(Permission) bị từ chối”.

Ví dụ về TÌM KIẾM bằng quyền của Linux(Linux FIND by Permissions Example)

Để sử dụng tốt điều này, bạn cần tìm hiểu các quyền của Linux(learn Linux permissions)

Tất cả các tệp ví dụ đều có quyền 664, ngoại trừ một tệp có quyền 775. Sử dụng tùy chọn -perm để tìm.

find Documents/ -name file-sample* -type f -perm 775

Ví dụ Linux FIND by Size(Linux FIND by Size Example)

Tìm tệp theo kích thước rất tiện lợi để làm cho các tệp khổng lồ đó lấp đầy ổ cứng của bạn. Sử dụng tùy chọn -size, kích thước mong muốn và một trong các hậu tố sau. Nếu không có hậu tố nào được sử dụng, -size mặc định là b . Để tìm các tệp bằng và lớn hơn một kích thước nhất định, hãy đặt dấu cộng (+) trước kích thước đó.

M - Megabyte

G - Gigabyte

k - Kilobyte

b - khối (512 byte - mặc định)

c - byte

w - từ (hai byte với nhau)

find -size +500k

Linux TÌM bởi chủ sở hữu(Linux FIND by Owner)

Có hai cách để tìm tệp theo chủ sở hữu. Một là theo tên người dùng của chủ sở hữu và một là theo nhóm của người dùng. Để tìm theo tên người dùng, hãy sử dụng tùy chọn -user , theo sau là tên người dùng. Để tìm theo nhóm người dùng, hãy sử dụng -group theo sau là tên nhóm ..

tìm tên nhóm(find -user groupname ) người dùng hoặc tìm tên người dùng(find -user username)

Linux TÌM Tệp theo Ví dụ sửa đổi lần cuối(Linux FIND Files by Last Modified Example)

Để tìm các tệp đã được sửa đổi hoặc chỉnh sửa trong X số ngày qua, hãy sử dụng -mtime theo sau là một số. Đặt một dấu trừ ( - ) trước số điện thoại sẽ tìm thấy bất kỳ điều gì thay đổi trong vòng nhiều ngày trước đó. Dấu cộng ( + ) có nghĩa là trong vòng nhiều ngày trước đó. 

find -name “file-sample*” -mtime +5 (greater than 5 days ago)

find -name “file-sample*” -mtime -5 (less than 5 days ago)

Để tìm theo lần sửa đổi cuối cùng trong vài phút, hãy sử dụng tùy chọn -mmin theo sau là số phút. Sử dụng + và - như trên.

find -name “file-sample*” -mmin -5

find -name “file-sample*” -mmin +5

Linux TÌM Tệp bằng Ví dụ TIme được truy cập lần cuối(Linux FIND Files by Last Accessed TIme Example)

Tùy chọn được sử dụng để tìm tệp dựa trên thời điểm chúng được mở lần cuối là -atime cho ngày và -amin trong vài phút. Theo sau nó với số ngày hoặc số phút để quay lại và sử dụng dấu + và - lớn hơn và nhỏ hơn.

find -name “file-sample*” -atime -5

find -name “file-sample* -amin -5

Kết hợp FIND với các lệnh Linux khác(Combine FIND with Other Linux Commands)

Có một ví dụ ở trên về việc sử dụng find với lệnh grep và bạn có thể sử dụng nó với nhiều lệnh khác. Bạn có thể thấy rằng việc sử dụng lệnh find và các lệnh khác có thể rất mạnh mẽ và tiết kiệm thời gian rất lớn. Hãy tưởng tượng(Imagine) bạn phải xóa một loạt các loại tệp cụ thể. Thay vì tìm kiếm xung quanh trong trình khám phá tệp, chỉ cần tạo lệnh phù hợp và nó được thực hiện trong vài giây. Bây giờ bạn sẽ sử dụng lệnh find như thế nào?



About the author

Tôi là một kỹ sư phần mềm và blogger với gần 10 năm kinh nghiệm trong lĩnh vực này. Tôi chuyên tạo các bài đánh giá và hướng dẫn về công cụ cho các nền tảng Mac và Windows, cũng như cung cấp các bình luận của chuyên gia về các chủ đề phát triển phần mềm. Tôi cũng là một diễn giả và người hướng dẫn chuyên nghiệp, từng thuyết trình tại các hội nghị công nghệ trên thế giới.



Related posts