Bạn có nghe về FINDSTR và Select-String chưa? Select-String là cmdlet dùng tìm kiếm văn bản & mẫu trong chuỗi đầu vào & tệp. Nó tương tự grep trên Linux & FINDSTR trên Windows. Trong hướng dẫn này, xem cách dùng FINDSTR và Select-String trong Windows 11/10.

FINDSTR là gì và cách dùng FINDSTR
FINDSTR là lệnh tìm văn bản cụ thể trong tệp trên Windows. Find String viết tắt thành FINDSTR. Cũng dùng tìm tệp chứa văn bản cụ thể. Có nhiều lệnh FINDSTR cho chức năng khác. Phát hành đầu với Windows 2000 Resource Kit tên qgrep. Là công cụ tích hợp Windows, tệp có dạng .exe. FINDSTR không tìm byte null như khoảng trắng trong Unicode.
Có quy tắc cơ bản dùng findstr trên Command Prompt hoặc trình thông dịch dòng lệnh khác do Microsoft phát triển:
- Mỗi lệnh FINDSTR phải chứa chuỗi theo sau tên tệp.
- Bạn có thể dùng ký tự chữ (literal) và ký tự meta (meta-characters) trong lệnh FINDSTR. Ký tự chữ không có ý nghĩa đặc biệt. Chữ và số gọi là ký tự chữ. Ký tự meta là ký hiệu có ý nghĩa riêng. Dưới là ký tự meta chấp nhận và ý nghĩa.
|
Ký tự meta |
Giá trị |
|---|---|
|
. |
Ký tự đại diện (Wildcard) – Bất kỳ ký tự nào |
|
* |
Lặp lại (Repeat) – Không hoặc nhiều lần ký tự/lớp trước. |
^ |
Vị trí đầu dòng (Beginning line position) – Đầu dòng. |
|
$ |
Vị trí cuối dòng (Ending line position) – Cuối dòng. |
|
[class] |
Lớp ký tự (Character class) – Bất kỳ ký tự nào trong tập hợp. |
|
[^class] |
Lớp ngược (Inverse class) – Bất kỳ ký tự nào không trong tập hợp. |
|
[x-y] |
Phạm vi (Range) – Ký tự trong phạm vi chỉ định. |
|
\x |
Thoát (Escape) – Dùng ký tự meta như chữ. |
|
\<string |
Vị trí đầu từ (Beginning word position) – Đầu từ. |
|
string\> |
Vị trí cuối từ (Ending word position) – Cuối từ. |
- Bạn nên tạo tệp văn bản với tiêu chí tìm kiếm trên dòng riêng khi tìm nhiều chuỗi.
- Dùng khoảng trắng giữa chuỗi để tìm nhiều chuỗi trong một lệnh trừ cú pháp với
/c.
Tham số và ý nghĩa trong cú pháp findstr
|
Tham số |
Mô tả |
|---|---|
|
/b |
Khớp mẫu văn bản nếu nó ở đầu dòng. |
|
/e |
Khớp mẫu văn bản nếu nó ở cuối dòng. |
|
/l |
Xử lý chuỗi tìm kiếm theo nghĩa đen. |
|
/r |
Xử lý chuỗi tìm kiếm như biểu thức chính quy. Mặc định. |
|
/s |
Tìm trong thư mục hiện tại và tất cả thư mục con. |
|
/i |
Bỏ qua chữ hoa/thường khi tìm chuỗi. |
|
/x |
In dòng khớp chính xác. |
|
/v |
Chỉ in dòng KHÔNG chứa khớp. |
|
/n |
In số dòng của mỗi dòng khớp. |
|
/m |
Chỉ in tên tệp nếu tệp chứa khớp. |
|
/o |
In độ lệch ký tự trước mỗi dòng khớp. |
|
/p |
Bỏ qua tệp có ký tự không in được. |
|
/off[line] |
Không bỏ qua tệp có thuộc tính offline. |
|
/f:<file> |
Lấy danh sách tệp từ tệp chỉ định. |
|
/c:<string> |
Dùng văn bản chỉ định như chuỗi tìm kiếm chữ đen. |
|
/g:<file> |
Lấy chuỗi tìm kiếm từ tệp chỉ định. |
|
/d:<dirlist> |
Tìm trong danh sách thư mục chỉ định. Mỗi thư mục phân cách bằng dấu chấm phẩy (;), ví dụ |
|
/a:<colorattribute> |
Chỉ định thuộc tính màu với 2 chữ số hex. Nhập |
|
<string> |
Chỉ định văn bản tìm trong filename. Bắt buộc. |
|
<span “>[\<drive>:][<path>]<filename>[…] |
Chỉ định vị trí và tệp tìm. Ít nhất một tên tệp bắt buộc. |
|
/? |
Hiển thị Trợ giúp tại dấu nhắc lệnh. |
Cách dùng lệnh findstr
1] Tìm từ microsoft hoặc windows trong tệp x.y, dùng:
findstr microsoft windows x.y
2] Tìm cụm "microsoft windows" trong x.y, dùng:
findstr /c:"microsoft windows" x.y
Trong lệnh trên /c dùng tìm văn bản "microsoft windows" trong tệp.
3] Tìm từ Microsoft (chữ M hoa) trong twc.txt, dùng:
findstr Microsoft twc.txt
4] Tìm từ Microsoft trong thư mục và thư mục con không phân biệt hoa/thường, dùng:
findstr /s /i Microsoft *.*
Trong cú pháp, /s tìm thư mục hiện tại và con. /i bỏ qua chữ hoa trong Microsoft.
5] Tìm dòng bắt đầu bằng To có nhiều khoảng trắng trước và hiển thị số dòng, dùng:
findstr /b /n /r /c:^ *To *.bas
6] Tìm nhiều chuỗi trong nhiều tệp với tiêu chí trong stringlist.txt và danh sách tệp trong filelist.txt, kết quả lưu result.out, dùng:
findstr /g:stringlist.txt /f:filelist.txt > results.out
7] Tìm tệp chứa từ thewindowsclub trong thư mục và con, dùng:
findstr /s /i /m \<thewindowsclub\> *.*
8] Tìm tệp chứa thewindowsclub và từ khác bắt đầu bằng the như thesis, thermometer, dùng:
findstr /s /i /m \<the.* *.*
Đây là cách dùng findstr trong trình thông dịch dòng lệnh như Command Prompt. Bạn phải hiểu từng tham số, chức năng, ký tự meta và ý nghĩa để viết cú pháp và dùng findstr thường xuyên.
Select-String là gì và tham số của nó
Hãy tưởng tượng bạn viết nhiều code PowerShell và mất dấu các chuỗi/văn bản trong tệp PowerShell. Bạn cần tìm trong hàng nghìn dòng code, hàng nghìn chuỗi/từ. Select-String giúp tìm chuỗi/văn bản trong tệp đầu vào PowerShell. Tương tự grep trên Linux.
Select-String là cmdlet tìm văn bản và mẫu trong chuỗi/tệp đầu vào. Tương tự grep trên Linux và FINDSTR trên Windows. Khi dùng Select-String tìm văn bản, nó tìm khớp đầu tiên mỗi dòng và hiển thị tên tệp, số dòng, và toàn bộ dòng khớp. Có thể dùng tìm nhiều khớp/dòng, hiển thị văn bản trước/sau khớp, kết quả Boolean True/False. Cũng dùng hiển thị toàn bộ văn bản trừ khớp biểu thức. WildCards của FINDSTR dùng được cho Select-String. Select-String làm việc với mã hóa khác như ASCII, Unicode. Dùng Byte-Order-Mark (BOM) xác định mã hóa. Nếu BOM thiếu, Select-String giả định UTF8.
Tham số Select-String
Microsoft thiết kế các tham số dưới cho cú pháp.
-AllMatches
Tìm tất cả khớp trong dòng thay vì khớp đầu tiên Select-String thường làm.
-CaseSensitive
Khớp phân biệt hoa/thường. Mặc định Select-String KHÔNG phân biệt.
-Context
Lấy số dòng chỉ định trước/sau dòng khớp. Nhập 1 lấy 1 dòng trước/sau.
-Culture
Có văn hóa như ordinal, invariant trong code. Tham số chỉ định văn hóa.
-Encoding
Chỉ định mã hóa văn bản trong tệp như ASCII, UTF8, UTF7, Unicode.
-Exclude
Loại trừ văn bản trong tệp.
-Include
Bao gồm văn bản trong tệp.
-InputObject
Chỉ định văn bản được tìm.
-List
Lấy danh sách tệp khớp văn bản.
-LiteralPath
Chỉ định đường dẫn tìm.
-NoEmphasis
Thường Select-String làm nổi bật khớp. Tham số tránh làm nổi bật.
-NotMatch
Tìm văn bản KHÔNG khớp mẫu.
-Path
Chỉ định đường dẫn tìm kèm wildcard.
-Pattern
Tìm khớp mỗi dòng như mẫu.
-Quiet
Xuất ra giá trị Boolean True/False.
-Raw
Xem đối tượng khớp thay vì info khớp.
-SimpleMatch
Chỉ định khớp đơn giản thay vì regex.
Khác biệt giữa FINDSTR và Select-String
FINDSTR là file thực thi tiền PowerShell dùng tìm văn bản/chuỗi trong tệp. Select-String là cmdlet PowerShell tìm văn bản/mẫu trong tệp. So với FINDSTR, Select-String mạnh và phức tạp hơn, hiển thị nhiều info về khớp.
PowerShell tương đương grep là gì?
Select-String là PowerShell tương đương grep trên Windows. Hoạt động như grep và đưa info chi tiết theo tham số dùng.
FINDSTR có hoạt động trên file Word không?
Có, FINDSTR hoạt động trên file Word. Nhưng không tìm khớp dù chuỗi có trong tệp. Cho kết quả file nhị phân .doc nhưng không .docx vì lý do kỹ thuật.
Đọc liên quan: Cách kiểm tra phiên bản PowerShell trong Windows.
