Kết quả tìm kiếm
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.
- Bài viết được đăng trên natuts.com
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