برای افراد ناآشنا، یک ابزار جستجوی الگو مانند findstr ممکن است بی فایده به نظر برسد. اما وقتی با فایلهای گزارش تولید شده توسط سیستم یا خروجیهای خط فرمان حاوی صدها خط متن سروکار دارید، findstr تنها ابزاری است که به آن نیاز دارید.
کاربران یک سیستم عامل لینوکس از قبل با ابزار باورنکردنی دستور Grep آشنا هستند و findstr نقش مشابهی را در ویندوز مایکروسافت ایفا می کند. میتوانید با استفاده از لولهها آن را با دستورات دیگر ترکیب کنید یا آن را مستقیماً اجرا کنید تا چندین فایل متنی را تجزیه کنید. بیایید با چند مثال به نحوه عملکرد findstr نگاه کنیم.
استفاده از فرمان Findstr
نحو اصلی ساده است - findstr
findstr SFC example1.txt
این دستور تمام خطوط حاوی رشته جستجوی SFC را پیدا کرده و خروجی میدهد. توجه داشته باشید که بهطور پیشفرض findstr به حروف کوچک و بزرگ حساس است، بنابراین هرگونه ذکری از SFC مطابقت نخواهد داشت.
پارامترها
میتوانید نحوه عملکرد findstr را با اضافه کردن پارامترهای اختیاری بیشتر سفارشی کنید. سوئیچ هایی مانند /B یا /I رفتار findstr را تغییر می دهند و شرایط اضافی را بر جستجو تحمیل می کنند. به عنوان مثال:
findstr /I SFC example1.txt
شامل /I به عنوان پارامتر باعث میشود که حروف جستجو غیرحساس باشد، و اجازه میدهد که همه موارد ذکر شده بدون در نظر گرفتن حروف بزرگ آنها مطابقت داشته باشند. شما می توانید لیست تمام پارامترهای findstr را در اسناد رسمی مایکروسافت پیدا کنید.
الگوهای اختیاری
پارامترها تنها راهی نیستند که می توانید findstr را سفارشی کنید. برای مثال، قرار دادن
findstr «SFC DISM» example1.txt
در بالا خطوط منطبق حاوی هر یک از شرایط را برمی گرداند. این باعث می شود زمانی که به دنبال ذکر نام یک مورد با نام های مختلف هستید، مفید باشد.
عبارات منظم
Findstr قادر به جستجو در چندین فایل است. تغییر
findstr SFC *.txt
استفاده از کاراکتر عام، regex را با همه فایلهای متنی در فهرست فعلی و زیرشاخههای آن مطابقت میدهد. نتایج نیز بر اساس نام فایلها تفکیک میشوند و به شما امکان میدهند ببینید کدام خط از کدام فایل منشا گرفته است.
لوله ها
مانند اکثر دستورات cmd، findstr نیز می تواند در خروجی دستورات دیگر استفاده شود. فقط کافی است پس از پایان دستور target یک لوله اضافه کنید و findstr را بدون
کارگردان | findstr .txt
این یک جستجوی findstr را روی خروجی فرمان dir اجرا میکند و فهرست فایلهایی را که با txt. ختم میشود برمیگرداند. البته، این مثال خاص در عمل بی فایده است، زیرا dir می تواند فایل هایی از همان نوع را با یک عبارت منظم پیدا کند.
همچنین میتوان مسیر طولانیتر تغییر مسیر خروجی به یک فایل متنی را انتخاب کرد و سپس از findstr در فایل متنی استفاده کرد، اما حذف واسطه آسانتر است.
برنامه های Findstr در ویندوز
کاربردهای آشکار findstr به سادگی از طریق نحو آشکار است. می توانید به دنبال فایل های متنی با یک رشته متن خاص بگردید یا ببینید آیا رشته خاصی در یک فایل وجود دارد یا خیر.
اگرچه از نظر تئوری مفید است، اما به ندرت خارج از موارد نادر استفاده می شود. در عصر سرویسهای ابری مانند Google Docs، بیشتر مردم دیگر فایلهای متنی زیادی ندارند.
کاربردهای واقعی findstr کمی ظریفتر هستند و نتایج قدرتمندتری را شامل میشوند. در اینجا برخی از نمونه های جالب تر وجود دارد.
یافتن انواع خاصی از فایل ها
دستور dir از قبل دارای گزینه ای برای جستجوی نام فایل ها با استفاده از عبارات منظم است. اما با findstr، میتوانید فایلهایی را جستجو کنید که ویژگیهای دیگر را به اشتراک بگذارند، مانند زمان یا تاریخ ایجاد.
فرض کنید خطایی در ساعت 06:43 بعد از ظهر رخ داده است، و شما می خواهید همه فایل های گزارش ایجاد شده در آن زمان را پیدا کنید. تنها با دستور dir، باید نتایج را به صورت دستی بررسی کنید یا تمام فایل های گزارش را دریافت کرده و آنها را با هم مقایسه کنید. با استفاده از findstr، این به یک دستور ساده تبدیل می شود.
کارگردان | findstr 06:43
می توانید همین ترفند را برای یافتن فایل های ایجاد شده در یک تاریخ خاص یا دریافت لیستی از دایرکتوری ها امتحان کنید.
کارگردان | findstr DIR
فیلتر کردن اطلاعات شبکه با Netstat.
نت استات یک دستور کاربردی ویندوز است که تمام اطلاعات مربوط به اتصالات شبکه رایانه شما را به شما می دهد—اطلاعات بیش از حد، جایی که findstr وارد می شود.
لولهکشی خروجی netstat در findstr به شما امکان میدهد اتصالات با ویژگیهای خاص را جستجو کنید. به عنوان مثال، به این ترتیب می توانید لیستی از تمام اتصالات برقرار شده را دریافت کنید.
netstat | findstr ESTABLISHED
این ترفند هنگام تشخیص مشکلات شبکه مفید است. حتی می توانید از findstr با یک PID برنامه برای یافتن تمام اتصالات باز شده توسط یک فرآیند خاص استفاده کنید.
netstat -o | findstr 13120
دریافت آدرس های IP خاص
فرمان ipconfig به شما امکان می دهد جزئیات تمام رابط های شبکه سیستم ها، از جمله آدرس های IP را مشاهده کنید. میتوانید از findstr برای استخراج نوع خاصی از آدرس IP بدون نیاز به پیمایش در کل آن استفاده کنید.
ipconfig | findstr موقت
می توانید این روش را برای به دست آوردن هر گونه اطلاعاتی از ipconfig، از زیر شبکه تا آدرس های دروازه گسترش دهید.
تجزیه و تحلیل فایل های اسکریپت
به هر زبان برنامه نویسی که کدنویسی می کنید، فایل های اسکریپت در نهایت فقط متن هستند. این بدان معنی است که می توانید از findstr برای تجزیه و تحلیل اسکریپت ها و بازیابی بخش های خاص بدون تمیز کردن کل کد استفاده کنید.
مثلاً می خواهیم ببینیم که دستور if در یک اسکریپت خاص چگونه استفاده شده است. می توانیم از دستور زیر استفاده کنیم:
findstr if script.ahk
این نه تنها خطوط را با استفاده از دستور if نمایش می دهد، بلکه عبارات استفاده شده را نیز به ما نشان می دهد. همچنین میتوانید پارامتر /N را برای نمایش شمارههای خط اضافه کنید، که برای فایلهای اسکریپت بسیار مفید است.
findstr /N if script.ahk
آیا Findstr ارزش استفاده را دارد؟
مشکل اصلی در پیمایش رابط خط فرمان، مقدار متنی است که فرد باید از میان آن مرور کند. Findstr یک ابزار ضروری برای استخراج اطلاعات مفید و فیلتر کردن ناخواسته است.
از آنجایی که همه دستورات ترمینال یک خروجی مبتنی بر متن می دهند، findstr همیشه می تواند برای مکان یابی داده های مربوطه استفاده شود. از عیب یابی مشکلات شبکه تا یافتن فایلهای صحیح، هر اقدامی با findstr کارآمدتر میشود..
حتی خارج از هم افزایی با دستورات دیگر، findstr به دلیل توانایی آن در پیمایش محتویات فایل های متنی مفید است. میتوانید خطاهای خاصی را در فایلهای گزارش تولید شده توسط ماشین پیدا کنید یا بخشهایی از کد را در یک اسکریپت پیچیده بازیابی کنید.
به طور خلاصه، findstr یک ابزار ضروری در زرادخانه هر کاربر پیشرفته ویندوز است، به ویژه شخصی که قصد آشنایی با رابط خط فرمان را دارد.
.