विंडोज कमांड लाइन पर निश्चित पैटर्न के साथ फाइलनेम ढूंढें?


11

एक निर्देशिका और उसके उपनिर्देशिका में कुछ पैटर्न की किसी भी फाइल को खोजने की कोशिश कर रहा है। मैंने कोशिश की:

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

जैसी फ़ाइलों को खोजने की उम्मीद में

abc.txt.r12222
tjy.java.r9994

जहां एसवीएन द्वारा किए गए पत्र आर के बाद एक नंबर जोड़ा जाता है।

मैं क्या गलत कर रहा हूं?


3
SU में आपका स्वागत है! स्टैकएक्सचेंज साइटों पर, जब एक जवाब ने आपकी मदद की है, तो लोगों को धन्यवाद देने का तरीका है कि आप अपनी समस्या को हल करें और यदि आपकी समस्या हल हो गई है (तो जवाब के बाईं ओर चेकमार्क पर क्लिक करके)। मैं केवल इसलिए कह रहा हूं क्योंकि आपको लगता है कि आपने अपने प्रश्नों के उत्तर नहीं दिए हैं।
टेराडॉन

जवाबों:


10

मैंने अभी कुछ दिनों पहले स्टैक ओवरफ्लो पर इसका उत्तर दिया था। /programming/15648679/find-text-string-or-part-of-text-with-dot-in-grepwin/15648872#15648872

आपके मामले में ऐसा लगेगा:

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

अपडेट करें

* अन्य उदाहरणों में से एक ".r [0-9] * $" में भी ऐसे रिकॉर्ड मिलते हैं जो 'आर' में समाप्त होते हैं क्योंकि * क्वांटिफायर का अर्थ 0 या अधिक है।


हाय cpattersonv1 - उत्तर देने के लिए धन्यवाद dir * / s / b | findstr \। .r [0-9] * $ काम करता है
chz

लगता है कि 1 या कई प्रतीक '+' को मान्यता नहीं देता है
स्कॉट चु

@ScottChu एक उदाहरण के साथ एक नया प्रश्न शुरू करता है। (मैं इस 5 साल पहले जवाब दे दिया।)
AbsoluteƵERØ

0

आपके लिए मेरा सुझाव यह है कि grep- यूनिक्स जैसे सिस्टम के लिए एक उपयोगिता जो विंडोज पर पोर्ट की गई है और नियमित एक्सप्रेशन का उपयोग करके लाइनों से मेल खा सकती है।

grepMinGW के MSYS पैकेज के साथ शामिल है, इंस्टॉलर यहां पाया जा सकता है । (केवल MSYS स्थापित करें)

फिर आपको अपने पैथ वैरिएबल में MSYS टूल को जोड़ना होगा, MSYS के लिए dafeult डायरेक्टरी है C:\MinGW\msys\1.0\bin

अंत में आप इस आदेश के साथ अपना सेराच कर सकते हैं:

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

... जो साधन: "से आउटपुट प्राप्त ls -a(छुपा फ़ाइलों सहित प्रविष्टि फ़ाइल) और इसे पारित करने grep, मैच लाइनों की तरह देखो आर [0-9] * (कम से कम एक चरित्र प्रत्येक तारांकन का प्रतीक के साथ)"।


हाय gronostaj प्रतिक्रिया के लिए धन्यवाद; मैंने कोशिश की$ 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
२४'१३

नमस्ते, मैं अभी भी फिल्म का पूरा नाम नहीं पा सकता हूँ; मैं उसको कैसे करू ? जैसे c:\pager\test.jar.r46521(मानक इनपुट) के विपरीत: test.jar.r46521
chz

ls | grep dir के समान है | विंडोज़ में खोज करता है।
निरपेक्ष

0

आप यह कोशिश कर सकते हैं:

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

मदद के लिए, टाइप करें findstr /?


हाय mfm4aa जवाब के लिए धन्यवाद - खिचड़ी भाषा काम करने लगती है; मैंने सभी संयोजनों की कोशिश की है और कोई भी चींटी सूचीबद्ध उत्तर नहीं देता है: जैसे इनलाइनC:\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

कृपया प्रयास करें:C:\Temp>dir /aa| findstr .r[0-9]*$
एंडोरो

हाय C:\Temp>dir /aa | findstr .r[0-9]*$ File Not Found
mfm

:) बस टाइप करें dir /aa| findstr .r[0-9]*$। वह यहाँ काम करता है ...
एंडोरो

हाय Endoro जवाब देने के लिए धन्यवाद। यह काम नहीं किया - यह कहते हैं कि फ़ाइल नहीं मिली
chz
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.