Tìm tên tệp có mẫu nhất định trên dòng lệnh Windows?


10

Cố gắng tìm bất kỳ tệp nào của mẫu nhất định trong một thư mục và thư mục con của nó. Tôi đã thử:

C:\test\workspace>dir *.*.r[0-9]* /s /b
File Not Found

với hy vọng tìm thấy các tập tin như

abc.txt.r12222
tjy.java.r9994

Trường hợp một số được nối sau chữ r, được thực hiện bởi SVN.

Tôi đang làm gì sai?


3
Chào mừng đến với SU! Trên các trang web stackexchange, khi một câu trả lời đã giúp bạn, cách cảm ơn mọi người là nâng cao câu trả lời của họ và chấp nhận nó (bằng cách nhấp vào dấu kiểm bên trái câu trả lời) nếu nó giải quyết được vấn đề của bạn. Tôi chỉ nói bởi vì bạn dường như đã chấp nhận không có câu trả lời nào bạn nhận được cho câu hỏi của bạn.
terdon

Câu trả lời:


9

Tôi vừa trả lời điều này trên Stack Overflow vài ngày trước. /programming/15648679/find-text-opes-or-part-of-text-with-dot-in-grepwin/15648872#15648872

Trong trường hợp của bạn, nó sẽ trông như:

dir * /s/b | findstr \.r[0-9]+$

Cập nhật

* Trong một trong các ví dụ khác ".r [0-9] * $" cũng tìm thấy các bản ghi kết thúc bằng 'r' vì bộ định lượng * có nghĩa là 0 trở lên.


Xin chào cpattersonv1 - cảm ơn bạn đã phản hồi dir * / s / b | findstr \ .r [0-9] * $ hoạt động
chz

findstr dường như không nhận ra 1 hoặc nhiều biểu tượng '+'
Scott Chu

@ScottChu bắt đầu một câu hỏi mới với một ví dụ. (Tôi đã trả lời điều này 5 năm trước.)
AbsoluteƵERØ

0

Đề nghị của tôi cho bạn là làm điều đó với grep- một tiện ích cho các hệ thống giống như UNIX đã được chuyển sang Windows và có thể khớp các dòng bằng các biểu thức thông thường.

grepđược bao gồm trong gói MSYS của MinGW, trình cài đặt có thể được tìm thấy ở đây . (chỉ cài đặt MSYS)

Sau đó, bạn sẽ phải thêm các công cụ MSYS vào biến PATH của mình, thư mục dafeult cho MSYS là C:\MinGW\msys\1.0\bin

Cuối cùng, bạn có thể thực hiện serach của mình với lệnh này:

ls -a | grep ^.+\..+\.r[0-9]+$

... trong đó phương tiện: "có được sản lượng từ ls -a(file danh sách bao gồm các file ẩn) và vượt qua nó để grep, đường trận đấu mà trông giống như . .R [0-9] * (có ít nhất một nhân vật tượng trưng bởi mỗi dấu hoa thị)".


chào gronostaj cảm ơn đã trả lời; Tôi đã thử$ ls -R | grep -H ^.*[0-9]$ (standard input):res.jar.r469621 (standard input):res.jar.r464460 (standard input):test.jar.r46521 (standard input):test.jar.r46970
chz 24/03/13

Xin chào tôi vẫn không thể có được tên đường dẫn đầy đủ của tên tệp; Làm thế nào để làm điều đó ? ví dụ c:\pager\test.jar.r46521như trái ngược với (đầu vào tiêu chuẩn): test.jar.r46521
chz 24/03/13

ls | grep giống như dir | tìm kiếm trong Windows.
Tuyệt

0

Bạn có thể thử điều này:

dir /a| findstr .r[0-9]*$

Để được giúp đỡ, gõ findstr /?.


Xin chào mfm4aa cảm ơn bạn đã phản hồi - dường như không thể làm việc; Tôi đã thử tất cả các kết hợp và không có câu trả lời nào được liệt kê: Ví dụ: nội tuyếnC:\Temp>findstr /S /B [0-9] . C:\Temp>findstr /S /B r[0-9]$ . C:\Temp>findstr /S /B $.*r[0-9]$ C:\Temp>findstr /S /B $.*r*$ C:\Temp>findstr /S /B $.*r..*$ C:\Temp>findstr /S /B $.*r\..*$ C:\Temp>findstr /S /B /R $.*r\..*$ C:\Temp>findstr /S /B /R "$.*\..r[0-9]*$ C:\Temp>findstr /S /B /R "$.*\..r[0-9]*$" C:\Temp>findstr /S /B /R "$.*\..r[0-9]*$" . C:\Temp>findstr /S /B /R "$.*\..r[0-9]$" . C:\Temp>findstr /S /B /R "$.*[0-9]*" . C:\Temp>findstr /S /B /R "$*[0-9]*" .
chz 24/03/13

Vui lòng thử:C:\Temp>dir /aa| findstr .r[0-9]*$
Endoro 24/03/13

Xin chào mfm cảm ơn vì đã viết - tôi vẫn không thể tìm thấyC:\Temp>dir /aa | findstr .r[0-9]*$ File Not Found
chz 24/03/13

:) chỉ cần gõ dir /aa| findstr .r[0-9]*$. Điều đó không hoạt động ở đây ...
Endoro 24/03/13

Xin chào Endoro cảm ơn đã phản hồi. Nó không hoạt động - nó nói File Not Found
chz 29/03
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.