यूनिक्स के समकक्ष विंडोज पर कमांड पाते हैं


34

विंडोज पर यूनिक्स खोज कमांड के बराबर क्या है ?

मैं देख रहा हूं कि find.exeविंडोज पर ए ज्यादा है grep। मैं विशेष रूप से इसके समकक्ष रुचि रखता हूं

find . -name [filename]

2
क्या मेरे जवाब में कुछ गलत है? क्या मैं इसमें सुधार कर सकता हूं? क्या आपको अभी भी मदद की ज़रूरत है?
जोहान्सम

क्षमा करें, मैंने कुछ समय पहले इस धागे को देखा था। आपके उत्तर के लिए धन्यवाद और इसे जल्द स्वीकार न करने के लिए क्षमा याचना।
एआरवी

जवाबों:


21
dir <drive: [drive:]> /s | findstr /i <pattern>

- विकल्प -

dir /s <drive:>\<pattern>

उदाहरण

dir c: d: /s | findstr /i example.txt

- विकल्प -

dir /s c:\example.txt

dir c: /s example.txtकाम करता है, भी।
DevSolar

@DevSolar क्या आप अपनी कमांड पुनः देख सकते हैं? मैंने इसे विंडोज 5.1 पर बनाया है। 2600 SP3 बिल्ड करें, और आपकी कमांड मुझे सिर्फ डायरेक्टरी में फाइलों की लिस्ट देती है c:
जोहान्सम

1
उह ... क्षमा करें। मुझे स्मृति से टाइप करने का अधिकार देता है। dir /s C:\example.txtयह है।
DevSolar

1
सबसे समान परिणामों के लिए मैं \bसंक्षिप्त (केवल पथ का उत्पादन) के लिए उपयोग करता हूं ; find <folder> -name <pattern>-> dir /s /b <folder><pattern>। जैसे find /tmp -name *.txt-> dir \s \b C:\temp\*.txt। हालांकि dirहमेशा निरपेक्ष पथ की एक सूची देता है, जबकि findहमेशा साथ उपसर्ग पथ देता है<folder>
Hashbrown

28

Find-ChildItemविंडोज PowerShell में Cmdlet यूनिक्स / लिनक्स खोजने आदेश के बराबर है

http://windows-powershell-scripts.blogspot.in/2009/08/unix-linux-find-equivalent-in.html

फाइंड-चाइल्डइम ऑप्शंस में से कुछ

  1. Find-ChildItem -Type f -Name ".*.exe"
  2. Find-ChildItem -Type f -Name "\.c$" -Exec "Get-Content {} | Measure-Object -Line -Character -Word"
  3. Find-ChildItem -Type f -Empty
  4. Find-ChildItem -Type f -Empty -OutObject
  5. Find-ChildItem -Type f -Empty -Delete
  6. Find-ChildItem -Type f -Size +9M -Delete
  7. Find-ChildItem -Type d
  8. Find-ChildItem -Type f -Size +50m -WTime +5 -MaxDepth 1 -Delete

प्रकटीकरण: मैं Find-ChildItemcmdlet का डेवलपर हूं


2
धन्यवाद। यह निश्चित रूप से इस सवाल का जवाब देने के लिए मैं क्या देख रहा हूँ के मन में अधिक है।
सुपरचेटाहा

7
Find-ChildItemएक आधिकारिक cmdlet नहीं है और यह PowerShell में शामिल नहीं है; आपको इस cmdlet को किसी लड़के के OneDrive से डाउनलोड करना होगा । इसमें कोई फर्क नहीं है और बस बैश, साइबरविन, यूनिक्सटिल्स या किसी भी अन्य प्रोग्राम को डाउनलोड करने से आपको यूनिक्स चलाने की सुविधा मिलती है find
वलेन

19

बिना अतिरिक्त cmdlets स्थापित किए, आप बस उपयोग कर सकते हैं Get-ChildItem:

Get-ChildItem -Filter *.zip -Recurse $pwd

1
जिस स्थिति में आप संभवतः किसी छोटे उपनाम का उपयोग करना चाहते हैं dir, lsया gci, जब तक आप एक स्क्रिप्ट नहीं लिख रहे हैं।
स्वॉन्की

5

यदि आप एक डायरेक्टरी पदानुक्रम में फ़ाइलों की खोज करने के लिए यूनिक्स की खोज का उपयोग कर रहे हैं, तो पॉवर्सशेल तरीका Get-ChildItem(उपनाम अन्य gci) cmdlet का उपयोग करना है और (alias is ) cmdlet के साथ परिणामों को फ़िल्टर करना Where-Objectहै where

उदाहरण के लिए, C:\Users\इसके नाम में 'आवश्यक' शब्द के साथ सभी फाइलें (शुरू से और पुनरावर्ती) खोजने के लिए, निम्नलिखित का उपयोग करें:

PS> gci -Path "C:\Users\"  -Recurse | where {$_.Name -like '*essential*'}

-likeविकल्प आपको पैटर्न मिलान के लिए वाइल्डकार्ड का उपयोग करने की अनुमति देता है।


2

यह एक बिल्कुल GNU नहीं है, लेकिन अधिक शक्तियुक्त लाइन लाइन से मेल खाता है।

PS> dir -recurse -ea 0 | % FullName | sls <grep_string>

उदाहरण:

PS> cd C:\
PS> dir -recurse -ea 0 | % FullName | sls "Program" | sls "Microsoft"
PS> dir -recurse -ea 0 | % FullName | sls "Program" | sls "Microsoft" | out-gridview

नोट: एक वस्तु के बजाय "|% FullName" के बाद लौटी हर चीज एक स्ट्रिंग है।

आप कहां ऑपरेटर का उपयोग कर सकते हैं, "?", हालांकि, इसका अधिक काम, और बहुत तेज नहीं:

PS> cd C:\
PS> dir -Recurse -ea 0 | ? FullName -like "*Program*" 
                       | ? FullName -like "*Microsoft*" 
                       | % FullName 
                       | out-gridview

यहाँ एक त्वरित शॉर्टकट है:

PS> function myfind {dir -recurse -ea 0 | % FullName | sls $args }

PS> cd C:\
PS> myfind "Programs" | sls "Microsoft"

#find all text files recursively from current directory
PS> myfind "\.txt$"

#find all files recursively from current directory
PS> myfind .

UnixUtils से -exec grep {} ढूंढें यह ठीक से काम नहीं करता "ऐसा कोई फ़ाइल या निर्देशिका नहीं" लगता है। यह समाधान: PowerShell.exe -Command "dir -Recurse -ea 0 | FullName -like '* .log'। Sls त्रुटि", एक बैच स्क्रिप्ट कार्यों के भीतर से। नोट: सिंगल कोट्स को अंदर, डबल कोट्स को बाहर का उपयोग करना चाहिए।
केविनफ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.