Tin Tức

Kết quả tìm kiếm

You are interested in Kết quả tìm kiếm right? So let's go together natuts.com look forward to seeing this article right here!

Khi bạn phải tìm một tệp trong Linux, đôi khi không dễ dàng như tìm một tệp trong hệ điều hành khác. Điều này đặc biệt đúng nếu bạn đang chạy Linux mà không có giao diện người dùng đồ họa và cần phải dựa vào dòng lệnh. Bài viết này sẽ giới thiệu về cách tìm kiếm một tệp trong Linux bằng cách sử dụng CLI. Lệnh find trong Linux được sử dụng để tìm một tệp (hoặc nhiều tệp) bằng cách lọc đệ quy các đối tượng trong hệ thống tệp dựa trên một cơ chế điều kiện đơn giản. Bạn có thể sử dụng lệnh find để tìm kiếm một tệp hoặc thư mục trên hệ thống tệp của bạn. Bằng cách sử dụng cờ -exec (find -exec), các đối tượng khớp, có thể là tệp, thư mục, liên kết biểu tượng, thiết bị hệ thống, v.v., có thể được tìm thấy và xử lý ngay trong cùng một lệnh.

Tìm một tệp trong Linux bằng tên hoặc phần mở rộng

Sử dụng lệnh find từ dòng lệnh để tìm một tệp cụ thể bằng tên hoặc phần mở rộng. Ví dụ sau tìm kiếm các tệp *.err trong thư mục /home/username/ và tất cả các thư mục con của nó:

find /home/username/ -name "*.err"

Sử dụng các lệnh và cú pháp find thông dụng để tìm một tệp trong Linux

Biểu thức find có dạng như sau:

find options starting/path expression

  • Thuộc tính options sẽ điều khiển hành vi và phương pháp tối ưu hóa của quá trình tìm kiếm.
  • Thuộc tính starting/path sẽ xác định thư mục cấp cao nhất mà find bắt đầu lọc.
  • Thuộc tính expression điều khiển các kiểm tra tìm kiếm trong cấu trúc thư mục để tạo ra kết quả.

Hãy xem ví dụ lệnh sau:

find -O3 -L /var/www/ -name "*.html"

Lệnh này cho phép cấu hình tối đa hóa mức tối ưu hóa (-O3) và cho phép find theo dõi các liên kết biểu tượng (-L). find tìm kiếm toàn bộ cây thư mục dưới /var/www/ để tìm kiếm các tệp kết thúc bằng .html.

Ví dụ cơ bản

Lệnh Mô tả
find . -name testfile.txt Tìm một tệp có tên là testfile.txt trong thư mục hiện tại và các thư mục con.
find /home -name *.jpg Tìm tất cả các tệp .jpg trong thư mục /home và các thư mục con.
find . -type f -empty Tìm một tệp trống trong thư mục hiện tại.
find /home -user exampleuser -mtime -7 -iname ".db" Tìm tất cả các tệp .db (không phân biệt hoa thường) được sửa đổi trong 7 ngày qua bởi người dùng có tên là exampleuser.

Tùy chọn và tối ưu hóa cho find

Cấu hình mặc định của find sẽ bỏ qua các liên kết biểu tượng (tệp tắt). Nếu bạn muốn find theo dõi và trả về các liên kết biểu tượng, bạn có thể thêm tùy chọn -L vào lệnh, như trong ví dụ trên.

find tối ưu hóa chiến lược lọc của nó để tăng hiệu suất. Có ba mức tối ưu hóa mà người dùng có thể chọn là -O1, -O2 và -O3. Tối ưu hóa -O1 là mặc định và buộc find lọc dựa trên tên tệp trước khi chạy tất cả các kiểm tra khác.

Tối ưu hóa ở mức -O2 ưu tiên các bộ lọc tên tệp, như trong -O1, và sau đó chạy tất cả các bộ lọc loại tệp trước khi tiếp tục với các điều kiện tài nguyên tốt hơn. Tối ưu hóa cấp độ -O3 cho phép find thực hiện tối ưu hóa nghiêm khắc nhất và sắp xếp lại tất cả các kiểm tra dựa trên sự tốn kém tương đối của chúng và khả năng thành công.

Lệnh Mô tả
-O1 (Mặc định) Lọc dựa trên tên tệp trước.
-O2 Lọc dựa trên tên tệp trước, sau đó là loại tệp.
-O3 Cho phép find tự động sắp xếp lại tìm kiếm dựa trên việc sử dụng tài nguyên hiệu quả và khả năng thành công.
-maxdepth X Tìm kiếm thư mục hiện tại cũng như tất cả các thư mục con cấp X.
-iname Tìm kiếm không phân biệt hoa thường.
-not Chỉ trả về kết quả không khớp với trường hợp kiểm tra.
-type f Tìm kiếm tệp.
-type d Tìm kiếm thư mục.

Tìm một tệp trong Linux dựa trên thời gian sửa đổi

Lệnh find có khả năng lọc cấu trúc thư mục dựa trên thời gian mà tệp đã được sửa đổi lần cuối:

find / -name "*conf" -mtime -7

find /home/exampleuser/ -name "*conf" -mtime -3

Lệnh đầu tiên trả về danh sách tất cả các tệp trong toàn bộ hệ thống tệp kết thúc bằng các ký tự conf và được sửa đổi trong 7 ngày qua. Lệnh thứ hai lọc thư mục người dùng exampleuser để tìm các tệp có tên kết thúc bằng các ký tự conf và đã được sửa đổi trong 3 ngày trước đó.

Sử dụng grep để tìm một tệp trong Linux dựa trên nội dung

Lệnh find chỉ có thể lọc cấu trúc thư mục dựa trên tên và siêu dữ liệu của tệp. Nếu bạn cần tìm kiếm dựa trên nội dung của tệp, hãy sử dụng công cụ như grep. Hãy xem ví dụ sau:

find . -type f -exec grep "example" '{}' ; -print

Điều này tìm kiếm mọi đối tượng trong cây thư mục hiện tại (.) là một tệp (-type f) và sau đó chạy lệnh grep “example” cho mỗi tệp thỏa mãn điều kiện. Các tệp khớp được in trên màn hình (-print). Dấu ngoặc nhọn ({}) là một giá trị thay thế cho kết quả tìm kiếm của find. Dấu ngoặc nhọn ({}) được bao quanh bởi dấu nháy đơn (‘) để tránh đưa cho grep một tên tệp bị lỗi. Lệnh -exec kết thúc bằng dấu chấm phẩy (;), nên cần được thoát ra (;) để tránh việc được diễn giải bởi shell.

Cách tìm kiếm và xử lý một tệp trong Linux

Tùy chọn -exec chạy các lệnh đối với mọi đối tượng khớp với biểu thức find. Hãy xem ví dụ sau:

find . -name "rc.conf" -exec chmod o+r '{}' ;

Điều này lọc mọi đối tượng trong cây thư mục hiện tại (.) cho các tệp có tên là rc.conf và chạy lệnh chmod o+r để thay đổi quyền truy cập tệp kết quả của find.

Các lệnh chạy với -exec được thực hiện trong thư mục gốc của quá trình find. Sử dụng -execdir để thực hiện lệnh cụ thể trong thư mục chứa kết quả khớp. Điều này có thể giảm bớt vấn đề bảo mật và cung cấp hiệu suất mong muốn hơn cho một số hoạt động.

Tùy chọn -exec hoặc -execdir chạy mà không có lời nhắc tiếp theo. Nếu bạn muốn được nhắc trước khi thực hiện hành động, hãy thay thế -exec bằng -ok hoặc -execdir bằng -okdir.

Cách tìm kiếm và xóa một tệp trong Linux

Để xóa các tệp khớp với tìm kiếm của bạn, bạn có thể thêm -delete vào cuối biểu thức. Chỉ làm điều này khi bạn chắc chắn kết quả chỉ khớp với các tệp mà bạn muốn xóa.

Trong ví dụ sau, find tìm tất cả các tệp trong cây thư mục bắt đầu từ thư mục hiện tại và đệ quy vào cây thư mục. Ở ví dụ này, find sẽ xóa tất cả các tệp kết thúc bằng các ký tự .err:

find . -name "*.bak" -delete

Thêm thông tin

Bạn có thể tham khảo các tài liệu sau để biết thêm thông tin về chủ đề này. Tuy chúng được cung cấp với hy vọng sẽ hữu ích, nhưng xin lưu ý rằng chúng tôi không đảm bảo độ chính xác hoặc tính kịp thời của các tài liệu được lưu trữ ở ngoài.

Conclusion: So above is the Kết quả tìm kiếm article. Hopefully with this article you can help you in life, always follow and read our good articles on the website: natuts.com

Related Articles

Back to top button