locate(1) General Commands Manual locate(1)

plocate - یافتن فایل‌ها بر پایه نام با بیشترین سرعت

plocate [OPTION]... PATTERN...

دستور plocate تمامی فایل‌های روی سیستم را که با الگوی داده‌شده (یا با تمامی الگوها، در صورت ارائه چند الگو) مطابقت دارند پیدا می‌کند. این کار به کمک نمایه‌ای انجام می‌شود که توسط updatedb(8) ایجاد شده یا (به‌صورت کمتر رایج) از نمایه‌ای دیگر توسط plocate-build(8) تبدیل شده است.

برنامه plocate تا حد زیادی از نظر آرگومان‌ها با mlocate(1) سازگار است، اما به مراتب سریع‌تر است. به‌ویژه، به ندرت به پویش کل پایگاه‌داده خود نیاز پیدا می‌کند، مگر اینکه الگو بسیار کوتاه (کمتر از سه بایت) باشد یا بخواهید یک عبارت منظم را جستجو کنید. این ابزار برای حفظ سازگاری با BSD locate یا نام‌فایل‌ها و لوکال‌های غیر UTF-8 تلاشی نمی‌کند. بیشتر I/O به‌صورت ناهمگام انجام می‌شود، اما نتایج همگام‌سازی می‌شوند تا خروجی در هر بار با همان ترتیب یکسان نمایش یابد.

هنگامی که چندین الگو داده شود، plocate فایل‌هایی را جستجو می‌کند که با همهٔ آن‌ها مطابقت داشته باشند. این ناهمخوانی اصلی با mlocate(1) است که فایل‌های منطبق با یک یا چند الگو را جستجو می‌کند، مگر آنکه گزینه -A داده شده باشد.

به‌طور پیش‌فرض، الگوها به عنوان زیررشته‌هایی برای جستجو در نظر گرفته می‌شوند. اگر دست‌کم یک فرانویسه تطبیق الگوی (globbing) گریز نخورده (*، ? یا []) داده شود، آن الگو در عوض به عنوان یک الگوی glob در نظر گرفته می‌شود (به این معنی که برای تطابق زیررشته باید با * شروع و پایان یابد). اگر --regexp داده شود، الگوها به عنوان عبارت‌های منظم پایه POSIX (غیر لنگردار) در نظر گرفته می‌شوند، و اگر --regex مشخص شود، الگوها عبارت‌های منظم گسترش‌یافته POSIX در نظر گرفته خواهند شد. تمامی این موارد با رفتار mlocate(1) همخوانی دارد.

مشابه mlocate(1)، ابزار plocate تمام فایل‌های قابل مشاهده برای کاربر فراخواننده را (به واسطه داشتن مجوزهای خواندن و اجرا بر روی تمام دایرکتوری‌های والد) نمایش می‌دهد و مواردی را که قابل مشاهده نیستند نشان نمی‌دهد؛ این کار از طریق اجرا با بیت setgid تنظیم‌شده برای دسترسی به نمایه (که به عنوان root ساخته شده است) و در عین حال بررسی دسترسی‌پذیری به عنوان کاربر فراخواننده انجام می‌پذیرد.

plocate با کد 0 خارج می‌شود تا نشان دهد تطابقی یافت شده است یا گزینه‌های --help یا --version داده شده‌اند. در غیر این صورت، plocate با کد وضعیت 1 خارج می‌شود که نشان‌دهنده وقوع خطا یا پیدا نشدن هیچ تطابقی است.

برای سازگاری با mlocate(1) نادیده گرفته می‌شود.
تنها با بخش نام فایل از نام مسیر مطابقت داده می‌شود؛ یعنی نام دایرکتوری‌ها از تطبیق مستثنی خواهند شد (اما همچنان چاپ می‌شوند). این گزینه سرعت جستجو را افزایش نمی‌دهد، اما می‌تواند تطابق‌های نامطلوب را حذف کند.
تک‌تک موارد منطبق را چاپ نمی‌کند؛ در عوض، آن‌ها را شمرده و در پایان تعداد کل را در خروجی چاپ می‌کند.
یافتن تطابق‌ها در پایگاه‌داده داده‌شده، به جای /var/lib/plocate/plocate.db. این آرگومان می‌تواند چندین بار برای جستجو در چند پایگاه‌داده ارائه شود. همچنین امکان تعیین چندین پایگاه‌داده در یک آرگومان و با جداکننده : وجود دارد. (هر نویسه‌ای، از جمله : و \، با قرار دادن یک \ پیش از آن قابل گریز دادن است.)
تنها ورودی‌هایی را چاپ می‌کند که به فایل‌های موجود در زمان اجرای locate اشاره دارند. توجه داشته باشید که برخلاف mlocate(1)، پیوندهای نمادین (symlinks) به‌طور پیش‌فرض دنبال نمی‌شوند (و در واقع، هیچ گزینه‌ای برای تغییر این رفتار وجود ندارد).
تطبیق غیرحساس به بزرگی و کوچکی حروف را بر اساس لوکال (locale) جاری انجام می‌دهد (پیش‌فرض، تطبیق حساس به بزرگی و کوچکی حروف و به‌صورت بایت‌به‌بایت است). توجه داشته باشید که plocate از دامنه کامل قواعد تبدیل بزرگی/کوچکی (case folding) در Unicode پشتیبانی نمی‌کند؛ به‌ویژه، جستجو برای ß حتی در لوکال آلمانی تطابقی با ss نخواهد داشت. همچنین در نظر داشته باشید که این گزینه تا حدی کندتر از تطبیق حساس به حروف خواهد بود، زیرا نیازمند تولید کاندیداهای بیشتری برای جستجو در نمایه است.
متوقف کردن جستجو پس از پیدا شدن LIMIT تطابق. اگر --count داده شده باشد، عدد چاپ‌شده حداکثر LIMIT خواهد بود.
چاپ نام ورودی‌ها بدون علامت نقل‌قول (کوتیشن). به‌طور معمول، plocate نویسه‌های خاص در نام فایل‌ها را گریز می‌دهد (escape می‌کند) تا برای استفاده توسط شل‌های متداول ایمن باشند (مشابه سبک کوتیشن shell-escape-always در GNU coreutils)، مگر زمانی که خروجی به یک لوله (pipe) هدایت شود؛ اما این گزینه چنین نقل‌قول‌هایی را غیرفعال می‌کند.
-0, --null
به جای نوشتن نویسه خط جدید پس از هر تطابق، یک نویسه NUL (کد اسکی 0) می‌نویسد. این گزینه برای ایجاد خروجی صریح و بدون ابهام هنگامی که قرار است توسط ابزارهای دیگر (مانند xargs(1)) پردازش شود مفید است، زیرا نام فایل‌ها مجازند شامل نویسه‌های خط جدید باشند.
الگوها به عنوان عبارت‌های منظم پایه POSIX در نظر گرفته می‌شوند. برای اطلاعات بیشتر regex(7) را ببینید. توجه داشته باشید که این کار جستجوی خطی در سراسر پایگاه‌داده را تحمیل می‌کند که کند است.
مشابه --regexp، اما الگوها در عوض به عنوان عبارت‌های منظم گسترش‌یافته POSIX در نظر گرفته می‌شوند.
تطبیق با کل نام مسیر. این حالت پیش‌فرض است، بنابراین مگر اینکه ابتدا -b داده شده باشد (بالا را ببینید)، کار خاصی انجام نخواهد داد. در نتیجه این گزینه صرفاً برای سازگاری با mlocate(1) وجود دارد.
چاپ اطلاعات نحوه استفاده و سپس خروج موفقیت‌آمیز.
چاپ اطلاعات نسخه و سپس خروج موفقیت‌آمیز.

در صورت ارائه، به انتهای فهرست مسیرهای --database افزوده می‌شود (چه مقداری صریحاً تعیین شده باشد و چه از پیش‌فرض استفاده شود). جداسازی با دونقطه (:) و گریز دادن نویسه‌ها از همان قواعد --database پیروی می‌کند.

Steinar H. Gunderson <steinar+plocate@gunderson.no>

plocate-build(8), mlocate(1), updatedb(8)

Oct 2020 plocate