Tổng quan
findstr là công cụ dòng lệnh trên Windows được sử dụng để tìm kiếm các mẫu văn bản (text pattern) trong file. Lệnh này hỗ trợ tìm kiếm với biểu thức chính quy (regular expression) và có thể hoạt động trên nhiều file cùng lúc.
Cú pháp
findstr [/b] [/e] [/l | /r] [/s] [/i] [/x] [/v] [/n] [/m] [/o] [/p] [/off[line]] [/f:<file>] [/c:<string>] [/g:<file>] [/d:<dirlist>] [/a:<colorattribute>] <strings> [<drive>:][<path>]<filename>[ ...]
Tham số
| Tham số | Mô tả |
|---|---|
| /b | Khớp mẫu nếu văn bản nằm ở đầu dòng |
| /e | Khớp mẫu nếu văn bản nằm ở 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 kiếm trong thư mục hiện tại và tất cả thư mục con |
| /i | Bỏ qua phân biệt hoa thường khi tìm kiếm |
| /x | In các dòng khớp hoàn toàn |
| /v | Chỉ in các dòng không chứa mẫu khớp |
| /n | In số dòng trước mỗi kết quả khớp |
| /m | Chỉ in tên file nếu file chứa kết quả khớp |
| /o | In vị trí ký tự trước mỗi dòng khớp |
| /p | Bỏ qua các file chứa ký tự không in được |
| /off[line] | Không bỏ qua các file có thuộc tính offline |
| /f:<file> | Lấy danh sách file từ file chỉ định |
| /c:<string> | Sử dụng chuỗi văn bản cụ thể làm mẫu tìm kiếm |
| /g:<file> | Lấy chuỗi tìm kiếm từ file chỉ định |
| /d:<dirlist> | Tìm kiếm trong danh sách thư mục được chỉ định (phân cách bằng dấu chấm phẩy) |
| /a:<colorattribute> | Chỉ định thuộc tính màu với hai chữ số hex |
| <strings> | Văn bản cần tìm trong filename (bắt buộc) |
| [<drive>:][<path>]<filename>[...] | Vị trí và file cần tìm kiếm |
| /? | Hiển thị trợ giúp tại dấu nhắc lệnh |
Lưu ý quan trọng
- Tất cả tùy chọn dòng lệnh phải được đặt trước chuỗi tìm kiếm và tên file
- Biểu thức chính quy sử dụng ký tự văn bản và siêu ký tự (metacharacter) để tìm mẫu văn bản
- Ký tự văn bản là các ký tự không có ý nghĩa đặc biệt trong cú pháp regex
- Siêu ký tự là các ký hiệu có ý nghĩa đặc biệt trong cú pháp biểu thức chính quy
Bảng siêu ký tự
| Siêu ký tự | Ý nghĩa |
|---|---|
| . | Ký tự đại diện - bất kỳ ký tự nào |
| * | Lặp lại - ký tự hoặc lớp trước đó xuất hiện 0 hoặc nhiều lần |
| ^ | Vị trí đầu dòng |
| $ | Vị trí cuối dòng |
| [class] | Lớp ký tự - bất kỳ ký tự nào trong tập hợp |
| [^class] | Lớp nghịch đảo - bất kỳ ký tự nào không trong tập hợp |
| [x-y] | Phạm vi - bất kỳ ký tự nào trong phạm vi chỉ định |
| \x | Thoát - sử dụng literal của siêu ký tự |
| \<string | Vị trí đầu từ |
| string\> | Vị trí cuối từ |
Khi sử dụng kết hợp, các ký tự đặc biệt trong biểu thức chính quy có độ ưu tiên cao nhất. Ví dụ, kết hợp dấu chấm (.) và dấu sao (*) để khớp bất kỳ chuỗi nào: .*
Để khớp chuỗi bắt đầu bằng ký tự bất kỳ và kết thúc bằng "ing": b.*ing
Lưu ý bổ sung
- Để tìm nhiều chuỗi trong một nhóm file, cần tạo file văn bản riêng chứa từng điều kiện tìm kiếm trên từng dòng
- Sử dụng dấu cách để phân cách nhiều chuỗi tìm kiếm, trừ khi tham số có tiền tố /c
Ví dụ minh họa
1. Tìm kiếm từ khóa "xinchao" hoặc "tam biet" trong file du lieu.txt:
findstr xinchao tam biet du lieu.txt
2. Tìm kiếm cụm từ "xinchao tam biet" trong file du lieu.txt:
findstr /c:"xinchao tam biet" du lieu.txt
3. Tìm tất cả các từ "HeThong" trong file bao cao.txt:
findstr HeThong bao cao.txt
4. Tìm kiếm từ "HeThong" trong tất cả các file của thư mục hiện tại và thư mục con, không phân biệt hoa thường:
findstr /s /i HeThong *.*
5. Tìm các dòng bắt đầu bằng "LAP" (trong các vòng lặp chương trình), hiển thị số dòng:
findstr /b /n /r /c:^ *LAP *.bas
6. Sử dụng file danh sach tim.txt chứa điều kiện tìm kiếm để tìm trong các file từ danh sach file.txt, lưu kết quả vào file ket qua.out:
findstr /g:danh sach tim.txt /f:danh sach file.txt > ket qua.out
7. Liệt kê tất cả các file chứa từ "maytinh" trong thư mục hiện tại và thư mục con, không phân biệt hoa thường:
findstr /s /i /m \<maytinh\> *.*
8. Liệt kê các file chứa từ "maytinh" và các từ bắt đầu bằng "maytinh" (như "maytinhhoa", "maytinhhoc tap"):
findstr /s /i /m \<maytinh.* *.*