اگر با هاست لینوکس یا سرور لینوکسی کار میکنید، پیدا کردن فایلها و پوشهها یکی از کارهایی است که احتمالاً بارها به آن نیاز خواهید داشت. گاهی نام دقیق فایل را میدانید و فقط میخواهید محل قرارگیری آن را پیدا کنید و گاهی تنها بخشی از نام فایل را به خاطر دارید. در چنین شرایطی، آموزش دستور locate میتواند یکی از روشهای ساده و سریع برای جستجوی فایلها در لینوکس باشد.
دستور locate برخلاف روشهایی که برای پیدا کردن فایلها، کل مسیرهای سیستم را در همان لحظه بررسی میکنند، از یک دیتابیس از نام و مسیر فایلها استفاده میکند. به همین دلیل معمولاً نتایج را با سرعت بالایی نمایش میدهد.
در این مقاله ابتدا با نحوه عملکرد locate آشنا میشویم، سپس نحوه نصب و استفاده از آن را با مثالهای مختلف بررسی میکنیم و در ادامه تفاوت locate و find را توضیح خواهیم داد.


دستور locate چیست؟
locate یکی از دستورات لینوکس برای پیدا کردن فایلها و پوشهها بر اساس نام آنها است. برای مثال، اگر به دنبال فایلی با نام backup.zip باشید، میتوانید به جای جستجوی دستی در پوشههای مختلف، از locate استفاده کنید.
ساختار ساده این دستور به شکل زیر است:
locate filename
در اینجا filename نام یا بخشی از نام فایل موردنظر است.
برای مثال، اگر بخواهیم فایلهایی را که در نامشان عبارت backup وجود دارد پیدا کنیم، میتوانیم بنویسیم:
locate backup
این دستور مسیر فایلها و پوشههایی را که با الگوی جستجو مطابقت دارند نمایش میدهد.
locate چگونه کار میکند؟
نکته مهم درباره locate این است که معمولاً فایلها را مستقیماً در تمام قسمتهای فایلسیستم جستجو نمیکند. این دستور از دیتابیس مسیر فایلها استفاده میکند.
دیتابیس مربوط به locate در فواصل زمانی مشخص یا با اجرای updatedb بهروزرسانی میشود. بنابراین وقتی شما یک فایل را جستجو میکنید، locate به جای اینکه تمام دیسک را از ابتدا بررسی کند، اطلاعات موجود در دیتابیس را بررسی میکند.
به همین دلیل اجرای locate معمولاً بسیار سریع است.
چرا locate سریع است؟
فرض کنید در یک سرور تعداد زیادی فایل و پوشه وجود دارد. اگر بخواهید هر بار برای پیدا کردن یک فایل، کل فایلسیستم بررسی شود، این کار میتواند زمان بیشتری نیاز داشته باشد.
locate اطلاعات مربوط به مسیر فایلها را از قبل در دیتابیس ذخیره میکند و هنگام جستجو همان اطلاعات را بررسی میکند. در نتیجه برای جستجوهای سریع و ساده، ابزار مناسبی است.
البته همین ویژگی یک محدودیت هم ایجاد میکند: ممکن است فایل تازهای که هنوز در دیتابیس ثبت نشده است، توسط locate پیدا نشود.
نصب دستور locate در لینوکس
در بسیاری از توزیعهای لینوکس ممکن است locate از قبل نصب نباشد. در این حالت ابتدا باید بسته مربوط به آن را نصب کنید.
نکته مهم این است که بسته مورد استفاده بسته به توزیع لینوکس میتواند متفاوت باشد. در نسخههای جدید بسیاری از توزیعها، plocate بهعنوان پیادهسازی رایج locate استفاده میشود.
نصب locate در Ubuntu و Debian
در Ubuntu و Debian میتوانید ابتدا فهرست بستهها را بهروزرسانی کنید:
sudo apt update
سپس بسته plocate را نصب کنید:
sudo apt install plocate
بعد از نصب، برای بررسی اینکه دستور در دسترس است، میتوانید از این دستور استفاده کنید:
locate --version
اگر نسخه برنامه نمایش داده شود، نصب با موفقیت انجام شده است.
نصب locate در CentOS، RHEL و Fedora
در توزیعهای مبتنی بر Red Hat، نام بسته و روش نصب ممکن است با توجه به نسخه سیستم متفاوت باشد. در سیستمهایی که plocate در مخازن آنها موجود است، میتوانید از دستور زیر استفاده کنید:
sudo dnf install plocate
در سیستمهایی که از yum استفاده میکنند، ممکن است این دستور مورد استفاده قرار بگیرد:
sudo yum install plocate
پس از نصب، برای بررسی در دسترس بودن دستور زیر را اجرا کنید.
locate --version
آموزش استفاده از دستور locate
بعد از نصب locate، استفاده از آن بسیار ساده است. کافی است عبارت یا نام موردنظر را بعد از دستور بنویسید.
جستجوی یک فایل با locate
فرض کنید میخواهید فایلی با نام config.php را در سیستم پیدا کنید. دستور زیر را اجرا کنید:
locate config.php
اگر فایل در دیتابیس locate وجود داشته باشد، مسیر آن نمایش داده میشود.
برای مثال، ممکن است خروجی چیزی شبیه این باشد:
/var/www/html/config.php
/home/user/backup/config.php
در این حالت میتوانید محل فایل را از روی مسیر مشخص کنید.
جستجوی فایل با بخشی از نام آن
لازم نیست همیشه نام کامل فایل را بدانید. locate میتواند بر اساس بخشی از نام هم جستجو کند.
برای مثال:
locate nginx
این دستور تمام مسیرهایی را که با الگوی nginx مطابقت داشته باشند نمایش میدهد.
اگر فایل موردنظر شما مثلاً nginx.conf باشد، در نتایج ظاهر خواهد شد.
جستجوی دقیق نام فایل
اگر میخواهید فقط فایلهایی با نام دقیق مشخصشده را پیدا کنید، میتوانید از گزینه -b همراه با الگوی مناسب استفاده کنید.
برای مثال:
locate -b '\config.php'
گزینه b- باعث میشود تطبیق بر اساس نام پایه فایل، یعنی بخش انتهایی مسیر، انجام شود.
این روش زمانی کاربرد دارد که میخواهید فایلهایی را که دقیقاً نام مشخصی دارند پیدا کنید، نه هر مسیری که عبارت موردنظر در بخشهای مختلف آن دیده میشود.
جستجوی فایلها بدون توجه به حروف بزرگ و کوچک
در لینوکس، حروف بزرگ و کوچک معمولاً با یکدیگر متفاوت هستند. برای مثال Backup و backup دو عبارت متفاوت محسوب میشوند.
اگر بخواهید جستجو بدون توجه به بزرگ یا کوچک بودن حروف انجام شود، میتوانید از گزینه -i استفاده کنید:
locate -i backup
در این حالت مواردی مانند backup، Backup و BACKUP نیز میتوانند در نتایج قرار بگیرند.
محدود کردن تعداد نتایج
گاهی جستجو نتایج زیادی دارد و فقط میخواهید چند نتیجه اول را ببینید.
برای این کار میتوانید از گزینه l- استفاده کنید:
locate -l 10 backup
در این مثال، locate حداکثر ۱۰ نتیجه را نمایش میدهد.
این قابلیت زمانی مفید است که عبارت جستجوی شما بسیار عمومی باشد و تعداد زیادی فایل با آن مطابقت داشته باشند.
جستجوی چند الگو
در بعضی نسخههای locate میتوانید چند الگوی جستجو را نیز مشخص کنید.
برای مثال:
locate -A /etc nginx
گزینه A- به معنای AND است؛ یعنی نتیجه باید با همه الگوهای مشخصشده مطابقت داشته باشد.
البته پشتیبانی دقیق از گزینهها ممکن است بین پیادهسازیهای مختلف locate متفاوت باشد. برای بررسی گزینههای موجود روی سرور خود، میتوانید از راهنمای داخلی استفاده کنید:
locate --help
بهروزرسانی دیتابیس locate با updated
یکی از مهمترین موضوعات در کار با locate، آشنایی با دستور updatedb است.
locate برای جستجو از دیتابیس خود استفاده میکند. بنابراین اگر فایل جدیدی ایجاد شده باشد، ممکن است هنوز در این دیتابیس وجود نداشته باشد.
برای بهروزرسانی دیتابیس میتوانید از دستور زیر استفاده کنید:
sudo updated
پس از اجرای آن، دیتابیس مربوط به locate مجدداً ایجاد یا بهروزرسانی میشود.
حالا اگر فایل جدیدی ایجاد کرده باشید، میتوانید دوباره آن را جستجو کنید:
locate filename
در صورت بهروزرسانی موفق دیتابیس، فایل جدید نیز میتواند در نتایج ظاهر شود.
چه زمانی باید updatedb را اجرا کنیم؟
در حالت عادی معمولاً نیازی نیست بعد از هر تغییر بهصورت دستی updatedb را اجرا کنید، زیرا در بسیاری از سیستمها بهروزرسانی دیتابیس بهصورت خودکار و دورهای انجام میشود.
با این حال، اگر فایل یا پوشهای را بهتازگی ایجاد کردهاید و locate آن را پیدا نمیکند، یکی از اولین مواردی که باید بررسی کنید قدیمی بودن دیتابیس است.
در این شرایط میتوانید:
sudo updated
را اجرا کرده و سپس دوباره جستجو را انجام دهید.


تفاوت دستور locate و find در لینوکس
locate و find هر دو برای پیدا کردن فایل در لینوکس استفاده میشوند، اما روش کار آنها یکسان نیست.
مهمترین تفاوت این است که locate معمولاً دیتابیس از پیش ساختهشده را جستجو میکند، در حالی که دستور find مسیر مشخصشده را در همان زمان اجرا بررسی میکند.
ویژگی | locate | find |
|---|---|---|
سرعت جستجو | معمولاً بسیار سریع | بسته به تعداد فایلها ممکن است کندتر باشد |
روش جستجو | استفاده از دیتابیس | بررسی مستقیم فایلسیستم |
پیدا کردن فایل تازه ایجادشده | ممکن است تا زمان بهروزرسانی دیتابیس پیدا نشود | معمولاً بلافاصله قابل جستجو است |
جستجو بر اساس نام | بله | بله |
جستجو بر اساس نوع فایل | محدودتر | بسیار قدرتمند |
جستجو بر اساس زمان تغییر | مناسب نیست | بله |
اجرای عملیات روی نتایج | محدود | بسیار انعطافپذیر |
مناسب برای | جستجوی سریع بر اساس نام | جستجوهای دقیق و پیچیده |
برای مثال، اگر فقط میدانید فایلی با نام backup در سیستم وجود دارد و میخواهید سریع مسیر آن را پیدا کنید، locate گزینه مناسبی است:
locate backup
اما اگر بخواهید مثلاً فایلهای یک پوشه خاص را بر اساس نوع، اندازه یا زمان تغییر پیدا کنند، find امکانات بیشتری در اختیار شما قرار میدهد.
بنابراین نمیتوان گفت یکی همیشه بهتر از دیگری است؛ انتخاب بین این دو به نوع جستجوی شما بستگی دارد.




























بدون دیدگاه