۰
(۰)

دستور locate در لینوکس

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

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

مراحل نصب locate در لینوکس

کار با فایل‌ها و دایرکتوری‌ها یکی از وظایف روزانه مدیران لینوکس است و کسب مهارت در مدیریت فایل‌ها می‌تواند بهره‌وری شما را به‌ویژه هنگام استفاده از VPS لینوکس بهبود بخشد.

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

اگر دستور locate در سیستم لینوکس شما در دسترس نیست، در اینجا مراحل نصب locate در توزیع‌های لینوکس مانند Debian، Ubuntu، CentOS، RHEL و Fedora آمده است. بنابراین به عنوان روت به VPS لینوکس خود وارد شوید و مراحل زیر را با امتیاز sudo دنبال کنید:

۱. بررسی نصب locate:

ابتدا با اجرای دستور زیر بررسی کنید که آیا دستور locate در سیستم لینوکس شما نصب شده است یا خیر:

locate

خروجی:

Command ' locate' not found

این خروجی نشان می‌دهد که سیستم لینوکس شما ابزار locate را از پیش نصب نشده است و باید locate را در سیستم لینوکس خود نصب کنید.

با این حال، اگر خروجی “locate: no pattern to search for specified” را دریافت کردید، به این معنی است که ابزار locate در سیستم لینوکس شما نصب شده است و می‌توانید بخش نصب locate را رد کنید.

۲. به‌روزرسانی مخزن بسته‌ها:

مخزن بسته‌های خود را با استفاده از مدیران بسته‌های خاص توزیع لینوکس خود به‌روز کنید:

sudo apt update                  #Debian/Ubuntu sudo yum -y update            #CentOS/RHEL/Fedora

۳. نصب locate در توزیع‌های لینوکس

با استفاده از مدیر بسته توزیع خود، locate را در نصب کنید:

sudo apt install mlocate                # Debian/Ubuntu sudo yum install mlocate               # CentOS/RHEL 7 or earlier sudo dnf install mlocate                # CentOS/RHEL 8+, Fedora

اکنون، سیستم لینوکس شما مجهز به یک ابزار locate است. نصب بسته mlocate به طور پیش‌فرض از طریق کار زمان‌بندی‌شده ایجاد شده، هر ۲۴ ساعت یک بار به به‌روزرسانی پایگاه داده کمک می‌کند، اما برای به‌روزرسانی دستی پایگاه داده، دستور زیر را اجرا کنید:

sudo updatedb

این دستور تضمین می‌کند که ابزار locate نتیجه را از یک پایگاه داده به‌روز شده فایل‌های شما دریافت می‌کند.

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

نحوه استفاده از دستور locate در لینوکس

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

نحو پایه locate در لینوکس:

نحو پایه دستور locate در لینوکس به شرح زیر است:

locate [options] [pattern]

دستور locate بدون گزینه‌ها، مسیر فایل‌ها و دایرکتوری‌هایی را که با الگوی جستجو مطابقت دارند، برای کسانی که مجوز خواندن دارند، چاپ می‌کند. به عنوان مثال، اگر دستور locate را به عنوان یک کاربر معمولی اجرا کنید، نمی‌توانید به دایرکتوری /root دسترسی پیدا کنید زیرا مجوز روت را ندارید.

گزینه‌های کلیدی دستور locate در لینوکس:

دستور locate در لینوکس مانند سایر ابزارهای خط فرمان دارای گزینه‌های متعددی برای تنظیم جستجوهای locate با نیازهای خاص شما است. در اینجا برخی از گزینه‌های کلیدی هستند:

  • -A: ورودی‌هایی را که با تمام الگوهای داده شده مطابقت دارند، چاپ می‌کند.
  • -b: فقط نام پایه را با الگوهای مشخص شده مطابقت می‌دهد.
  • -c: تعداد کل تطبیق‌های یافت شده را به جای نام فایل‌ها نشان می‌دهد.
  • -d: از یک فایل پایگاه داده متفاوت (DBPATH، یک لیست جداسازی شده با کولون از نام‌های فایل پایگاه داده) به جای فایل پیش‌فرض (پیش‌فرض /var/lib/locate.db است) استفاده می‌کند.
  • -e: ورودی‌هایی را جستجو می‌کند که به فایل‌های موجود اشاره می‌کنند.
  • -r (–regexp): از یک عبارت منظم به جای الگو برای یک جستجوی پیشرفته‌تر استفاده می‌کند.
  • -q: حالت بی‌صدا، خروجی را سرکوب می‌کند تا هیچ پیامی حاوی خطا در هنگام خواندن یا پردازش پایگاه‌های داده نشان ندهد.
  • -i: هنگام جستجوی نام فایل، حساسیت به حروف بزرگ و کوچک الگو را نادیده می‌گیرد.
  • -n: تعداد نتایج نمایش داده شده را محدود می‌کند.
  • -S: آمار مربوط به هر پایگاه داده خوانده شده را به جای یافتن فایل‌ها نمایش می‌دهد.
  • -h: یک پیام راهنما چاپ می‌کند.
  • -V: نسخه دستور locate را نشان می‌دهد.
  • -w: فقط نام کامل مسیر را با الگوهای داده شده مطابقت می‌دهد.

جستجوی پایه برای یک فایل

دستور locate می‌تواند مسیر فایل‌ها و دایرکتوری‌هایی را که شما با استفاده از نام فایل یا بخشی از نام فایل جستجو می‌کنید، چاپ کند. به عنوان مثال، برای جستجوی یک فایل به نام “test.txt” تایپ می‌کنید:

locate test.txt

این دستور تمام مسیرهای فایل‌هایی را که حاوی “test.txt” هستند، نمایش می‌دهد.

سفارشی‌سازی خروجی locate

هنگامی که نتیجه خیلی طولانی است، می‌توانید خروجی دستور locate را در لینوکس با انتقال خروجی به دستور less در لینوکس قالب‌بندی کنید:

locate test.txt | less

انتقال خروجی به دستور less منجر به خوانایی بهتر می‌شود.

محدود کردن نتایج جستجو

می‌توانید تعداد نتایج جستجو را با استفاده از گزینه -n محدود کنید. به عنوان مثال، برای نمایش فقط ۱۵ نتیجه جستجوی فایل‌هایی که با .html ختم می‌شوند، دستور زیر را اجرا کنید:

locate "*.html" -n 15

این دستور ۱۵ فایل اول مطابق با الگوی جستجو را برمی‌گرداند.

نکته: دستور locate الگوهایی را که حاوی کاراکترهای گلوبینگ (مانند *, ?, و غیره) هستند، برای تطبیق الگوی انعطاف‌پذیر می‌پذیرد. اگر الگو شامل کاراکترهای گلوبینگ نباشد، دستور locate PATTERN را جستجو می‌کند. بنابراین استفاده از یک کاراکتر وحشی در دستور قبلی، قدرت و دقت جستجو را با یافتن فایل‌ها بر اساس تطبیق با الگوهای نام خاص (مانند فایل‌هایی با نام‌های جزئی یا پسوندهای خاص) افزایش می‌دهد.

جستجوی بی‌توجه به حروف بزرگ و کوچک

دستور locate به طور پیش‌فرض پرسش‌ها را به صورت حساس به حروف بزرگ و کوچک پردازش می‌کند که با استفاده از گزینه -i، دستور locate را مجبور می‌کند که هنگام جستجو، حروف بزرگ و کوچک را نادیده بگیرد. به عنوان مثال، برای نادیده گرفتن حساسیت به حروف بزرگ و کوچک از دستور زیر استفاده کنید:

locate -i test.txt

خروجی:

/home/opera/p1/TEST.txt/home/opera/p2/Test.txt/home/opera/p3/test.txt

نمایش فقط فایل‌های موجود

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

بنابراین، برای جلوگیری از مواجهه با این مشکل، باید قبل از اجرای دستور locate، پایگاه داده را به‌طور دستی به‌روز کنید یا از گزینه -e استفاده کنید تا هنگام اجرای دستور locate در لینوکس، فقط فایل‌های موجود را نشان دهید:

locate -e filename

به عنوان مثال، فایل مورد نظر به نام test.txt را حذف می‌کنیم و دستور locate را اجرا می‌کنیم:

rm test.txt locate test.txt

خروجی:

/home/opera/p3/ test.txt

این خروجی نشان می‌دهد که دستور locate مسیر test.txt را برمی‌گرداند در حالی که ما آن را حذف کرده‌ایم. بنابراین، از گزینه -e با locate استفاده کنید تا این کاستی‌ها را از بین ببرید:

locate -e test.txt

این دستور هیچ نتیجه‌ای برنمی‌گرداند زیرا فایل حذف شده است.

شمارش تعداد ورودی‌های مطابق

گاهی اوقات نیاز دارید بدانید چند فایل خاص که برای شما مهم هستند، در سیستم شما وجود دارند. در این وضعیت، گزینه -c همراه با دستور locate می‌تواند به شما کمک کند تا تعداد فایل‌های مطابق را به جای نام فایل‌ها و مسیرهای آن‌ها مشاهده کنید:

locate -c .txt

خروجی:

۱۸۳

همانطور که می‌بینید این دستور تعداد تمام ورودی‌های مطابق، تمام فایل‌های ختم شده با .txt را برمی‌گرداند.

سرکوب خروجی locate در لینوکس

می‌توانید هنگام جستجو با استفاده از گزینه -q همراه با دستور locate در لینوکس، یک حالت بی‌صدا فعال کنید تا هرگونه پیام خطا یا هشدار که ممکن است هنگام پردازش پایگاه‌های داده ظاهر شود، سرکوب شود. برای این کار از مثال زیر استفاده کنید:

locate -q  myfile.txt

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

جستجوی فایل با نام دقیق

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

همچنین، دستور locate از جستجوی پیچیده پشتیبانی می‌کند، به شما امکان می‌دهد از عبارت منظم (regular expression) پایه به جای الگو استفاده کنید. بنابراین، برای یافتن یک فایل با نام دقیق (فایل‌هایی که با .txt ختم می‌شوند) دستور زیر را اجرا کنید:

locate -r \.txt$

این دستور فایل‌هایی را نشان می‌دهد که نام فایل آنها دقیقاً با پرسش ورودی مطابقت دارد. کاراکتر اسلش رو به جلو (/) برای مرزهای عبارت منظم استفاده می‌شود و تایپ علامت دلار ($) در انتها پایان یک خط را مشخص می‌کند.

استفاده از پایگاه داده متفاوت هنگام جستجو

می‌توانید هنگام نیاز به یافتن نتایجی که در پایگاه داده پیش‌فرض mlocate وجود ندارند، یک پایگاه داده متفاوت مشخص کنید. برای استفاده از یک پایگاه داده متفاوت، نحو زیر را اجرا کنید:

locate -d [new database path] [pattern]

بررسی آمار پایگاه داده

دستور locate به شما امکان می‌دهد آمار پایگاه داده را بررسی کرده و اطلاعاتی مانند تعداد فایل‌های فهرست شده، تعداد دایرکتوری‌ها و فایل‌ها و اندازه پایگاه داده را به دست آورید. برای نمایش آمار در مورد پایگاه داده locate به جای جستجوی فایل‌ها، از گزینه -S همراه با دستور locate استفاده کنید:

locate -S

خروجی:

Database /var/ lib/mlocate/mlocate.db:58,150 directories276,768 files22,067,113 bytes in file names18,420,189 bytes used to store database

استفاده از جداکننده‌های مختلف برای خروجی دستور locate

کاراکتر خط جدید (\n) جداکننده پیش‌فرض برای ورودی‌های خروجی دستور locate است، اما می‌توانید از یک جداکننده متفاوت مانند ASCII NULL با استفاده از گزینه -۰ استفاده کنید:

locate -0 test.txt

آیا locate می‌تواند فایل‌های مخفی را پیدا کند؟

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

locate .bashrc

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

چگونه می‌توانم یک دایرکتوری را در لینوکس با استفاده از دستور locate پیدا کنم؟

برای جستجوی یک دایرکتوری خاص با استفاده از دستور locate، از نحو زیر استفاده کنید:

locate -r '/directory_name$'

یا

locate directory_name

استفاده از اسلش انتهایی (/) برای محدود کردن نتایج به دایرکتوری‌ها مفید است و استفاده از گزینه -r برای اطمینان از یافتن دایرکتوری‌ها و جستجوی مسیر ختم شده به نام دایرکتوری است.

با این حال، این دستور تمام مسیرهای حاوی directory_name را فهرست می‌کند که گاهی اوقات نتایج زیادی را برمی‌گرداند. می‌توانید از دستور find به عنوان جایگزینی بهتر برای دستور locate برای یافتن دایرکتوری‌ها با نحو زیر استفاده کنید:

find /path/to/search -type d

یا

find / -type d -name directory_name

نتیجه‌گیری

دستور locate در لینوکس یک ابزار قدرتمند خط فرمان برای جستجوی سریع و کارآمد فایل‌ها است. تبدیل شدن به یک متخصص در دستور locate یک مزیت ارزشمند در مدیریت فایل‌ها در یک سیستم فایل بزرگ است. برای کسب اطلاعات بیشتر در مورد دستور locate، “man locate” را در ترمینال اجرا کنید.

 

چقدر این مطلب مفید بود؟

روی یک ستاره کلیک کنید تا به آن امتیاز دهید!

میانگین امتیاز ۰ / ۵. تعداد آرا: ۰

تا الان رای نیامده! اولین نفری باشید که به این پست امتیاز می دهید.