find

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو

در سیستم‌عامل‌های شبه‌یونیکس و دیگر سیستم‌عامل‌ها، find ابزاری خط فرمانی برای جستجو بدنبال فایل‌ها در میان دایرکتوری‌های موجود در سیستم‌فایل است. این جستجو بر اساس معیارها و ضوابطی است که کاربر تعیین می‌کند. معیارهایی مانند الگوی نام فایل‌ها و تاریخ ویرایش یا دسترسی فایل‌ها. بصورت پیش‌فرض find لیستی از فایل‌های موجود در دایرکتوری کاری را برمی‌گرداند.

برنامهٔ مرتبط دیگری به‌نام locate از find برای بروزرسانی پایگاه دادهٔ خود استفاده می‌کند.

شکل استفاده[ویرایش]

find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]

سه گزینهٔ اول مشخص می‌کند که find چطور باید با symbolic link ها رفتار کند. رفتار پیش‌فرض اینطور است که هیچ‌وقت symbolic link ها دنبال نشوند. همچنین می‌توان این حالت را صراحتا توسط گزینهٔ P- مشخص نمود. گزینهٔ L- برای مواقعی استفاده می‌شود که قصد داشته باشیم symbolic link ها توسط find دنبال شوند.

حداقل یک مسیر باید تعریف شود. find می‌تواند نویسه‌های عام (به انگلیسی: Wildcard character) را نیز تفسیر کند.

عبارات (به انگلیسی: Expression) نیز باید توسط کارکتر فاصله از هم جدا شوند و از چپ به راست ارزیابی می‌شوند. همچنین می‌توانند شامل اعمال منطقی AND و OR باشند که می‌توان توسط آنها عبارات پیچیده‌تری را پدید آورد. (a- و o- بترتیب برای AND و OR کردن) همچنین نسخهٔ گنوی find دارای تعداد بسیار زیادی ویژگی دیگر است که در پازیکس تعریف نشده‌اند.

نمونه‌ها[ویرایش]

در دایرکتوری فعلی[ویرایش]

find . -name 'my*'

با این دستور find در دایرکتوری فعلی و شاخه‌های زیرین آن فایل یا دایرکتوریهایی را جستجو می‌کند که با my شروع می‌شوند. کارکترهای نقل‌قول (به انگلیسی: quote) برای این استفاده شده‌اند که تداخلی با مفسر خط فرمان رخ ندهد. بدون این کارکترها، مفسر خط فرمان عبارت *my را با لیست فایل‌هایی که با my شروع می‌شوند و در دایرکتوری فعلی موجود هستند، جایگزین می‌کند.

فقط فایلها[ویرایش]

find . -name "my*" -type f

دستور بالا، نتایج جستجو را فقط محدود به فایلهای واقعی می‌کند. بنابراین دایرکتوری‌ها، فایلهای خاص، لوله‌ها (به انگلیسی: pipe)، لینک‌ها و غیره از قلم می‌افتند و find آنها را نادیده می‌گیرد.

فرمان‌ها[ویرایش]

عمل پیش‌فرضی که find با نتایج جستجو انجام می‌دهد print- است، یعنی فقط نمایش آنها در خروجی. (توجه داشته باشید که نسخه‌های جدید find هیچ عمل پیش‌فرضی انجام نمی‌دهند) ولی می‌توان هر فرمان دیگری را جایگزین عمل پیش‌فرض نمود.

find . -name "my*" -type f -ls

دستور بالا با استفاده از ls اطلاعات بیشتری در مورد فایل‌های یافته شده نمایش می‌دهد.

جستجو در تمام دایرکتوری‌ها[ویرایش]

find / -type f -name "myfile" -print

این دستور تمام دایرکتوری‌های سیستم را بدنبال فایلی بنام myfile جستجو می‌کند و در صورت یافتن آن، در خروجی چاپ می‌کند. البته معمولا این روش جستجو برای یک فایل ایده‌ی خوبی نیست. چون ممکن است برای مدت زمان قابل توجهی طول بکشد. پس بهتر است دایرکتوری مورد جستجو بصورت جزئی‌تر مشخص شود.