পাওয়ারসহেল সমান `গ্রেপ-আর-এলি (- ম্যাচগুলির সাথে ফাইলস)


44

পাওয়ারশেল-এ, আমি কোনও ডিরেক্টরিতে (পুনরাবৃত্তভাবে) সমস্ত ফাইলকে কীভাবে তালিকাবদ্ধ করব যাতে প্রদত্ত রেইগেক্সের সাথে মেলে এমন পাঠ্য থাকে? প্রশ্নের মধ্যে থাকা ফাইলগুলিতে বোধগম্য পাঠ্যের সত্যিই দীর্ঘ লাইন থাকে, তাই আমি মিলে যাওয়া লাইনটি দেখতে চাই না - কেবল ফাইলের নাম।

উত্তর:


56

আপনি Select-Stringফাইলের অভ্যন্তরে পাঠ্য অনুসন্ধান করতে এবং Select-Objectপ্রতিটি ম্যাচের জন্য নির্দিষ্ট বৈশিষ্ট্যগুলি ফেরত দিতে ব্যবহার করতে পারেন । এটার মতো কিছু:

Get-ChildItem -Recurse *.* | Select-String -Pattern "foobar" | Select-Object -Unique Path

বা একটি ছোট সংস্করণ, এলিয়াস ব্যবহার করে:

dir -recurse *.* | sls -pattern "foobar" | select -unique path

আপনি যদি পুরো পথ না দিয়ে কেবল ফাইলের নামগুলি চান তবে এর Pathসাথে প্রতিস্থাপন করুন Filename


ব্যাখ্যা:

  1. Get-ChildItem-Recurse *.* বর্তমান ডিরেক্টরি এবং এর সমস্ত উপ-ডিরেক্টরিতে সমস্ত ফাইল প্রদান করে।

  2. Select-String-Pattern "foobar" প্রদত্ত প্যাটার্ন "ফুবার" এর জন্য সেই ফাইলগুলি অনুসন্ধান করে।

  3. Select-Object-Unique Pathপ্রতিটি ম্যাচের জন্য কেবল ফাইলের পাথ ফেরত দেয়; -Uniqueপরামিতি সদৃশ ঘটিয়েছে।


select -Unique... শীতল, নতুন কিছু শিখেছে। এটি নিখুঁতভাবে কাজ করে, ধন্যবাদ!
মাইকেল ক্রোপাট

Is সত্যিই দরকার? গেট-চাইল্ড আইটেম-রেকর্ড ঠিক একইভাবে কাজ করে বলে আমি মনে করি।
পাইওটর পেরাক

1
বা আরও সংক্ষেপে, gci -r | sls "foobar" | ইউনিক পথ নির্বাচন করুন
ডেভিড মার্কেল

পাওয়ারশেল "হ্যাং" বলে মনে হচ্ছে না মিললে এটি আর ফিরে আসবে না। কোনও মিল না থাকলে অনুসন্ধান কীভাবে করা যায় তা কীভাবে জানবে?
রেগেগুইটার

2

দ্রষ্টব্য, পাওয়ারসেল v1.0 এবং v2.0 এ আপনাকে কাজ করার জন্য প্রথম অবস্থানের প্যারামিটার (পাথ) নির্দিষ্ট করতে হবে -Recursion

টেকনেট ডকুমেন্টেশন

-Recurse

নির্দিষ্ট অবস্থানে এবং অবস্থানগুলির সমস্ত শিশু আইটেমগুলিতে আইটেমগুলি পায়।

উইন্ডোজ পাওয়ারশেল ২.০ এবং উইন্ডোজ পাওয়ারশেলের পূর্ববর্তী সংস্করণগুলিতে, রিকার্স প্যারামিটার কেবল তখনই কাজ করে যখন পাথ প্যারামিটারের মান একটি ধারক যেমন শিশু আইটেম থাকে যেমন: সি: \ উইন্ডোজ বা সি: \ উইন্ডোজ *, এবং যখন এটি হয় না তখন আইটেমটিতে শিশু আইটেম নেই, যেমন সি: \ উইন্ডোজ * .exe।


1

ডিরেক্টরিটির ভিতরে নীচের কমান্ডটি ব্যবহার করুন যা আপনি "গ্রেপ" সম্পাদন করতে চান এবং [SEARCH_PATTERN]আপনি কী মিলাতে চান তা মেলাতে পরিবর্তন করতে চান। এটি পুনরাবৃত্ত হয়, ডিরেক্টরিতে সমস্ত ফাইল অনুসন্ধান করে।

dir -Recurse | Select-String - pattern [SEARCH_PATTERN]

http://www.jamescoyle.net/how-to/1205-how-to-use-powershell-to-recursively-search-for-text-within-files-on-windows


0

সিলেক্ট-স্ট্রিংয়ের-List এই উদ্দেশ্যে একটি প্যারামিটার রয়েছে :

প্রতিটি ইনপুট ফাইলে কেবল প্রথম ম্যাচটি ফেরত দিন। ডিফল্টরূপে, সিলেক্ট-স্ট্রিং প্রতিটি পাওয়া ম্যাচের জন্য একটি ম্যাচইনফো বস্তুকে প্রত্যাবর্তন করে।

- ss64.com

আপনি এটি এর মতো ব্যবহার করতে পারেন:

gci -Recurse | sls -List FOOBAR

কিছু নমুনা ফলাফল দেখতে দেখতে এখানে রয়েছে (এর জন্য উইন্ডোজ এসডিকে অনুসন্ধান করা ERROR_SUCCESS):

shared\bthdef.h:576:#define BTH_ERROR(_btStatus)   ((_btStatus) != BTH_ERROR_SUCCESS)
shared\netioapi.h:2254:    ERROR_SUCCESS on success.  WIN32 error code on error.
shared\rpcnterr.h:34:#define RPC_S_OK                          ERROR_SUCCESS
shared\winerror.h:214:// MessageId: ERROR_SUCCESS
um\advpub.h:40://      ERROR_SUCCESS_REBOOT_REQUIRED        Reboot required.
um\bluetoothapis.h:243://      ERROR_SUCCESS
um\ClusApi.h:571:_Success_(return == ERROR_SUCCESS)
um\dsparse.h:102:_Success_(return == ERROR_SUCCESS)
um\eapmethodpeerapis.h:228:// If the function succeeds, it returns ERROR_SUCCESS. Otherwise, it is
um\eappapis.h:56:// If the functions succeed, they return ERROR_SUCCESS. Otherwise, it is
um\MapiUnicodeHelp.h:583:                if ((hkeyPolicy && RegQueryValueExW(hkeyPolicy, szName, 0, &dwType, (LPBYTE)
&dwLcid, &dwSize) == ERROR_SUCCESS && dwType == REG_DWORD) ||
um\Mddefw.h:127:            routine will return ERROR_SUCCESS and the inherited data even if
um\Msi.h:1693:// Returns ERROR_SUCCESS if file is a package.
um\MsiQuery.h:192:// Returns ERROR_SUCCESS if successful, and the view handle is returned,
um\msports.h:46:    ERROR_SUCCESS if the dialog was shown
um\ncryptprotect.h:164:    ERROR_SUCCESS
um\NTMSAPI.h:1761:_Success_ (return == ERROR_SUCCESS)
um\oemupgex.h:108://  Returns:    ERROR_SUCCESS in case of success, win32 error otherwise
um\PatchWiz.h:90://                     ERROR_SUCCESS, plus ERROR_PCW_* that are listed in constants.h.
um\Pdh.h:415:_Success_(return == ERROR_SUCCESS)

যদি আপনি প্রকৃত FileInfoঅবজেক্টগুলি (আপেক্ষিক পাথ এবং একক ম্যাচের ফলাফলের পরিবর্তে) ফিরে পেতে চান তবে আপনি এটি এটি ব্যবহার করতে পারেন:

Get-ChildItem -Recurse -File | where { Select-String -Path $_ -List -Pattern FOOBAR }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.