
پیدا کردن سریع فایل ها با دستور locate در لینوکس
دستور locate در لینوکس برای پیدا کردن فایل ها بر اساس اسم و الگو استفاده می شود و موقع جستجوی فایل ها، به جای فایل سیستم به یک پایگاه داده حاوی بیت ها، فایل ها و مسیر مربوط به آنها نگاه می کند.
دستور locate یکی از قوی ترین جایگزین های دستور find است و چون برای جستجو به یک پایگاه داده از پیش ساخته شده، متکی است و از پارامترها و فیلترهای متنوعی پشتیبانی می کند، سرعت بیشتری نسبت به find دارد.
پیش نیازهای استفاده از دستور locate در لینوکس
- سیستم یا سرور مبتنی بر لینوکس
- حساب کاربری با امتیازات ادمین
- نصب بودن دستور locate
دستور locate به طور پیش فرض در اکثر توزیع های لینوکس نصب است ولی اگر بعد از اجرای دستور locate –version متوجه شدید که این دستور در سیستم شما نصب نیست، ابتدا باید دستور نصب locate در لینوکس را اجرا کنید:
دستور نصب locate در توزیع های مبتنی بر دبیان مثل اوبونتو
sudo apt install mlocate
دستور نصب locate در توزیع های مبتنی بر ردهت مثل CentOS و فدورا
sudo yum install locate
یا
sudo dnf install mlocate
دستور نصب locate در آرچ لینوکس
sudo pacman -S mlocate
دستور نصب locate در OpenSUSE
sudo zypper install mlocate
بعد از اینکه دستور نصب با موفقیت اجرا شد، با استفاده از دستور زیر می توانید از نصب موفقیت آمیز آن مطمئن شوید:
locate --version
اگر برای مدیریت حجم زیادی از داده ها، به یک سرور با منابع سخت افزاری بالا نیاز دارید، می توانید خرید سرور مجازی لینوکس را در دستور کار خود قرار دهید و از قدرت آن برای جستجو و مدیریت هر چه سریع تر فایل ها بهره ببرید.
سینتکس دستور locate در لینوکس
سینتکس پایه دستور locate به صورت زیر است:
locate Options Pattern
دستور locate به کمک الگویی که شما در قسمت Pattern لحاظ می کنید، شروع به جستجوی فایل های موردنظر می کند و آنها را در خروجی به شما نشان می دهد.
اما با استفاده از Options می توانید رفتار آن را به شکل دلخواه تغییر دهید.
آپشن های دستور locate
آپشن | کاربرد |
b- | مطابقت نام پایه با الگوی مشخص شده |
c- | نمایش تعداد آیتم های مطابق با الگوی موردنظر |
d- | تعیین یک پایگاه داده دیگر به جای پایگاه داده پیش فرض |
i- | نادیده گرفتن case sensitivity برای الگو |
p- | نادیده گرفتن الگوها، علائم نگارشی و فاصله ها موقع تطبیق الگو |
l- | تعیین محدودیت برای تعداد فایل های یافت شده |
0- | جداسازی آیتم های خروجی با استفاده از کاراکتر ASCII NULL (به جای چاپ هر آیتم در خط جدید) |
S- | نمایش آمار مربوط به پروسه خواندن از پایگاه داده (به جای پیدا کردن فایل) |
r- | استفاده از regex برای جستجوی فایل ها |
q- | نادیده گرفتن ارورها موقع خواندن و پردازش پایگاه داده |
w- | استفاده از کل اسم مسیر به جای الگو برای مطابقت با فایل های موجود در سیستم |
شاید کاربرد بعضی از آپشن ها برایتان گنگ باشد ولی نیازی به نگرانی نیست چون موقع بررسی مثال های کاربردی در مورد دستور locate در لینوکس به طور کامل با آنها آشنا خواهید شد.
اگر هم می خواهید جزئیات بیشتری را در آپشن های دستور locate بدانید، می توانید از دو دستور زیر کمک بگیرید:
locate -h
man locate
مثال های کاربردی از دستور locate لینوکس
مثال هایی که در ادامه بررسی می کنیم به ترتیب ساده تا پیشرفته مرتب شده اند که توصیه می کنیم آنها را یکی یکی امتحان کنید:
جستجوی فایل ها بر اساس اسم
اگر به دنبال فایلی می گردید که اسم و پسوند آن را به طور کامل می دانید، می توانید دستور locate را به صورت زیر اجرا کنید:
locate sample.txt
این دستور به دنبال فایل متنی sample می گردد و آدرس دایرکتوری های حاوی این فایل را در خروجی برای شما لیست می کند.
برای اینکه ویژگی حساسیت به بزرگ/کوچک بودن حروف (case sensitivity) را نادیده بگیرید، می توانید آپشن i را هم به دستور اضافه کنید:
locate -i sample.txt
حالا اگر در مسیر فعلی فایل هایی با عنوان Sample، SAMLPE و … وجود داشته باشند، آنها را هم در لیست خروجی خواهید دید.
دسترسی به لیست فایل های حاوی یک پسوند خاص
این بار باید به جای اسم فایل، از وایلد کارت * استفاده کنید و پسوند موردنظر را به آن اضافه کنید.
locate "*.html"
اگر خروجی این دستور برای شما خیلی طولانی است و می خواهید تعداد آیتم های خروجی را محدود کنید، می توانید از دستور زیر استفاده کنید:
locate "*.html" -n 20
این دستور فقط ۲۰ مورد از فایل های مطابق با الگو را به شما نشان می دهد.
استفاده از الگوی regex برای جستجوی فایل
اگر نیاز به جستجوی دقیق و پیشرفته دارید، می توانید الگوی موردنظر برای جستجوی فایل را به صورت regex وارد کنید.
برای این کار باید آپشن r را هم به دستور locate اضافه کنید. به عنوان مثال، برای پیدا کردن تمام فایل هایی که با حرف بزرگ شروع می شوند باید دستور locate را به صورت زیر اجرا کنید:
locate -r '^[A-Z]'
یا برای پیدا کردن تمام تصاویر با پسوند jpg ،png یا gif می توانید از دستور زیر استفاده کنید:
locate -r '\.(jpg|png|gif)$'
بله به این ترتیب می توانید الگوی موردنظر را به دستور اضافه کنید و فایل های مطابق با آن را در خروجی ببینید.
شمارش تعداد فایل مرتبط با الگوی موردنظر
اگر نیازی به مسیر فایل های خروجی ندارید و فقط می خواهید تعداد فایل های مطابق با الگوی موردنظر را ببینید، می توانید از آپشن c استفاده کنید:
locate -c mysql
خروجی این دستور، تعداد فایل های حاوی رشته mysql را به شما نشان می دهد.
غیرفعال سازی نمایش ارور موقع جستجوی فایل
با استفاده از آپشن e می توانید هر گونه خطایی که در حین خواندن پایگاه داده رخ می دهد را غیرفعال کنید.
locate -q mysql
نمایش فایل های موجود
با توجه به اینکه دستور locate نتایج را به صورت آنی بازیابی می کند، این امکان وجود دارد که فایل های حذف شده هم در نتیجه ظاهر شوند و دلیل این قضیه، آپدیت نبودن پایگاه داده است.
اگر می خواهید این محدودیت را دور بزنید و فقط فایل های موجود را ببینید، می توانید از آپشن e استفاده کنید:
locate -e mysql
جداسازی نتایج خروجی به صورت پیوسته (بدون خط جدید)
دستور locate در لینوکس به طور پیش فرض از کاراکتر خط جدید (n/) برای جدا کردن فایل های خروجی استفاده می کند. اما اگر می خواهید این کاراکتر را با جداکننده دیگری مثل ASCII NULL جایگزین کنید، می توانید از آپشن 0 استفاده کنید:
locate -i -0 *sample.txt*
به این ترتیب، هر مسیر فایل در یک خط جدید قرار نمی گیرد و تمام نتایج به صورت پیوسته در کنار هم قرار می گیرند.
نادیده گرفتن تفاوت اعراب و لهجه ها
اگر می خواهید نشانه های نوشتاری که بالا یا پایین حروف قرار می گیرند (مثل café) ، در پروسه جستجوی فایل ها تاثیری نداشته باشند، می توانید از آپشن t استفاده کنید.
مثلاً اگر فایلی به اسم nice-café.txt دارید و می خواهید مسیر آن را پیدا کنید، با اجرای دستور زیر به نتیجه نمی رسید:
locate nice-cafe
ولی اگر آپشن t را به دستور اضافه کنید، locate فایل nice-café.txt را به عنوان نتیجه بر می گرداند.
مشاهده آمار مربوط به پایگاه داده locate
اگر می خواهید از جزئیات مربوط به پایگاه داده مثل ( تعداد دایرکتوری، تعداد فایل و …) مطلع شوید، می توانید از آپشن S استفاده کنید:
locate -S
آپدیت پایگاه داده مربوط به locate
با توجه به این که با گذشت زمان، فایل ها و دایرکتوری های سیستم تغییر می کند، اگر این پایگاه داده را قبل از عملیات جستجو آپدیت نکنید، ممکن است فایل هایی که حذف شده اند یا اخیراً به سیستم اضافه شده اند، در نتایج دستور locate لحاظ نشوند.
برای دسترسی به نتایج آپدیت و درست، بهتر است این پایگاه داده را با اجرای دستور زیر آپدیت کنید:
sudo updatedb
صبر کنید تا این پروسه به طور کامل طی شود.
تعیین یک پایگاه داده mlocate دیگر
اگر از عملکرد پایگاه داده پیش فرض راضی نیستید یا به هر دلیل دیگر، می خواهید از یک پایگاه داده دیگر برای جستجوی فایل های موردنظر خود استفاده کنید، با استفاده از آپشن d می توانید این کار را انجام دهید:
locate -d [database-path] mysql
سخن آخر
دستور locate برای جستجوی سریع تر فایل های موردنظر به کار می رود و اگر می خواهید رفتار آن را به شکل دلخواه سفارشی سازی کنید، می توانید از آپشن های متنوعی که برای آن لحاظ شده است، استفاده کنید.