Đối với người mới, công cụ tìm kiếm mẫu như findstr có thể có vẻ vô dụng. Nhưng khi xử lý file log hệ thống hoặc đầu ra dòng lệnh chứa hàng trăm dòng văn bản, findstr chính là công cụ bạn cần.
Người dùng Linux đã quen với sức mạnh tuyệt vời của lệnh Grep, và findstr đóng vai trò tương tự trong Microsoft Windows. Bạn có thể kết hợp nó với các lệnh khác qua pipe (ống dẫn) hoặc chạy trực tiếp để phân tích nhiều tệp văn bản. Hãy xem findstr hoạt động như thế nào qua vài ví dụ.
Sử Dụng Lệnh Findstr
Cú pháp cơ bản: findstr <string> <filepath>, trong đó <string> là mẫu cần tìm, <filepath> là đường dẫn tệp cần tìm. Mở Command Prompt và thử.
findstr SFC example1.txt
Lệnh này tìm và xuất tất cả dòng chứa chuỗi "SFC". Lưu ý: mặc định findstr phân biệt chữ hoa/thường (case-sensitive), nên "sfc" sẽ không khớp.
Các Tham Số (Parameters)
Bạn tùy chỉnh hành vi findstr bằng các tham số tùy chọn. Các switch như /B hoặc /I thay đổi hành vi tìm kiếm, thêm điều kiện. Ví dụ:
findstr /I SFC example1.txt
Tham số /I làm tìm kiếm không phân biệt chữ hoa/thường (case-insensitive), khớp mọi viết hoa/thường của từ khóa. Danh sách đầy đủ tham số xem tại tài liệu Microsoft chính thức.
Các Mẫu Tùy Chọn (Optional Patterns)
Tham số không phải cách duy nhất tùy chỉnh findstr. Bọc <string> trong dấu ngoặc kép cho phép chỉ định nhiều mẫu, khớp nếu tìm thấy bất kỳ chuỗi nào.
findstr "SFC DISM" example1.txt
Lệnh trên trả về dòng chứa "SFC" hoặc "DISM". Hữu ích khi tìm mục có tên khác nhau.
Biểu Thức Chính Quy (Regular Expressions)
Findstr có thể tìm kiếm qua nhiều tệp. Thay <filepath> bằng biểu thức chính quy khiến lệnh tìm mẫu trong tất cả tệp khớp.
findstr SFC *.txt
Ký tự đại diện * khớp regex với tất cả tệp .txt trong thư mục hiện tại và thư mục con. Kết quả được tách theo tên tệp, cho biết dòng nào từ tệp nào.
Pipe (Ống Dẫn)
Giống hầu hết lệnh cmd, findstr cũng dùng được trên đầu ra của lệnh khác. Chỉ cần thêm pipe | sau lệnh đích và gọi findstr không cần <filepath>.
dir | findstr .txt
Chạy findstr trên đầu ra của lệnh dir, trả về danh sách tệp kết thúc bằng .txt. Ví dụ này thực tế không cần thiết vì dir đã có thể lọc tệp theo regex.
Cách dài hơn: chuyển hướng đầu ra vào tệp text rồi dùng findstr trên tệp đó, nhưng dùng pipe trực tiếp nhanh gọn hơn.
Ứng Dụng Của Findstr Trong Windows
Các trường hợp dùng rõ ràng từ cú pháp: tìm tệp text chứa chuỗi cụ thể, hoặc kiểm tra chuỗi có trong tệp không. Tuy hiếm dùng ngoài các trường hợp đặc biệt (ngày nay ít người lưu nhiều tệp text nhờ đám mây như Google Docs).
Ứng dụng thực sự của findstr tinh vi hơn và cho kết quả mạnh mẽ. Dưới đây là vài ví dụ hay:
Tìm Loại Tệp Cụ Thể
Lệnh dir đã có tùy chọn tìm tên tệp bằng regex. Nhưng với findstr, bạn tìm tệp chia sẻ thuộc tính khác như thời gian hoặc ngày tạo.
Giả sử lỗi xảy ra lúc 06:43 PM, bạn muốn tìm tất cả file log tạo lúc đó. Dùng dir một mình phải lọc thủ công. Với findstr:
dir | findstr 06:43
Cách tương tự tìm file tạo ngày cụ thể hoặc liệt kê thư mục:
dir | findstr DIR
Lọc Thông Tin Mạng Với Netstat
netstat cho tất cả thông tin kết nối mạng – quá nhiều thông tin, findstr giúp lọc. Piping đầu ra netstat vào findstr để tìm kết nối với thuộc tính cụ thể. Ví dụ: liệt kê tất cả kết nối ESTABLISHED (đã thiết lập):
netstat | findstr ESTABLISHED
Mẹo này hữu ích khi chẩn đoán sự cố mạng. Bạn thậm chí dùng findstr với PID ứng dụng để tìm tất cả kết nối do một tiến trình cụ thể mở:
netstat -o | findstr 13120
Lấy Địa Chỉ IP Cụ Thể
Lệnh ipconfig hiển thị chi tiết tất cả giao diện mạng, bao gồm địa chỉ IP. Dùng findstr trích xuất loại IP cụ thể mà không cần cuộn toàn bộ.
ipconfig | findstr Temporary
Mở rộng phương pháp này để lấy bất kỳ thông tin nào từ ipconfig: subnet mask, gateway, v.v.
Phân Tích File Script
Dù ngôn ngữ lập trình nào, file script cuối cùng là văn bản. Dùng findstr phân tích script, lấy đoạn cụ thể mà không cần duyệt toàn bộ code.
Ví dụ: muốn xem câu lệnh if được dùng như thế nào trong script. Lệnh:
findstr if script.ahk
Không chỉ hiển thị dòng dùng if, còn cả biểu thức đi kèm. Thêm tham số /N để hiển thị số dòng, rất tiện cho file script.
findstr /N if script.ahk
FindStr Có Giá Trị Sử Dụng Không?
Khó khăn chính khi làm việc dòng lệnh là lượng văn bản lớn phải lọc. Findstr là công cụ bất khả thi để trích xuất thông tin hữu ích và loại bỏ rác.
Vì mọi lệnh terminal đều xuất ra văn bản, findstr luôn có thể dùng để định vị dữ liệu liên quan. Từ khắc phục sự cố mạng đến tìm tệp đúng, mọi hành động hiệu quả hơn với findstr.
Ngoài sự phối hợp với lệnh khác, findstr hữu ích nhờ duyệt nội dung tệp text. Bạn tìm lỗi cụ thể trong file log sinh ra bởi máy, hoặc lấy đoạn code trong script phức tạp.
Tóm lại, findstr là công cụ không thể thiếu trong bộ công cụ của bất kỳ người dùng Windows nâng cao nào, đặc biệt là người muốn làm quen với giao diện dòng lệnh.