آموزش دستور locate در لینوکس؛ جستجوی سریع فایل‌ها و پوشه‌ها

زمان مطالعه: 6 دقیقه

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

دستور locate برخلاف روش‌هایی که برای پیدا کردن فایل‌ها، کل مسیرهای سیستم را در همان لحظه بررسی می‌کنند، از یک دیتابیس از نام و مسیر فایل‌ها استفاده می‌کند. به همین دلیل معمولاً نتایج را با سرعت بالایی نمایش می‌دهد.

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

دستور locate
دستور locate

دستور 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
				
			

را اجرا کرده و سپس دوباره جستجو را انجام دهید.

دستور updatedb
دستور updatedb

تفاوت دستور locate و find در لینوکس

locate و find هر دو برای پیدا کردن فایل در لینوکس استفاده می‌شوند، اما روش کار آن‌ها یکسان نیست.

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

ویژگی
locate
find
سرعت جستجو
معمولاً بسیار سریع
بسته به تعداد فایل‌ها ممکن است کندتر باشد
روش جستجو
استفاده از دیتابیس
بررسی مستقیم فایل‌سیستم
پیدا کردن فایل تازه ایجادشده
ممکن است تا زمان به‌روزرسانی دیتابیس پیدا نشود
معمولاً بلافاصله قابل جستجو است
جستجو بر اساس نام
بله
بله
جستجو بر اساس نوع فایل
محدودتر
بسیار قدرتمند
جستجو بر اساس زمان تغییر
مناسب نیست
بله
اجرای عملیات روی نتایج
محدود
بسیار انعطاف‌پذیر
مناسب برای
جستجوی سریع بر اساس نام
جستجوهای دقیق و پیچیده

برای مثال، اگر فقط می‌دانید فایلی با نام backup در سیستم وجود دارد و می‌خواهید سریع مسیر آن را پیدا کنید، locate گزینه مناسبی است:

				
					locate backup
				
			

اما اگر بخواهید مثلاً فایل‌های یک پوشه خاص را بر اساس نوع، اندازه یا زمان تغییر پیدا کنند، find امکانات بیشتری در اختیار شما قرار می‌دهد.

بنابراین نمی‌توان گفت یکی همیشه بهتر از دیگری است؛ انتخاب بین این دو به نوع جستجوی شما بستگی دارد.

بدون دیدگاه

دیدگاهتان را بنویسید

هاستvpsسرور اختصاصی