نحوه استفاده از دستور Locate در لینوکس #
مقدمه #
دستور locateدر لینوکس جایگزینی برای findدستور است. برخلاف find، این locateدستور به جای جستجو در کل سیستم فایل، در یک پایگاه داده که مرتباً بهروز میشود، به دنبال فایلها میگردد. این رویکرد، جستجو را سریعتر و راحتتر میکند، بهخصوص هنگام کار با فایلهای زیاد.
این مقاله نحوه استفاده از این locateدستور برای جستجوی موثر فایلها و دایرکتوریها در لینوکس را توضیح میدهد.
مزایای دستور locateبیش از حدfind #
اگرچه هر دو دستور findand locateموارد استفاده خود را دارند، اما locateبسیار سریعتر عمل میکنند. locateاز پایگاه دادهای استفاده میکند که لینوکس به طور خودکار در پسزمینه میسازد تا نتایج سریعتری ارائه دهد. اگر پایگاه داده قدیمی باشد، نتایج حاصل locateممکن است همیشه وضعیت سیستم را منعکس نکند. با این حال، میتوانید مرتباً پایگاه داده را به صورت دستی بهروزرسانی کنید یا یک cron job برنامهریزی کنید.
از طرف دیگر، دستور find در لینوکس با جستجوی بلادرنگ، نتایج دقیقتری ارائه میدهد و آن را برای یافتن فایلها بر اساس معیارهای خاص ایدهآل میکند.
درک locateپایگاه داده #
این locateدستور به یک پایگاه داده متکی است که مکان فایلها را در سراسر سیستم فایل شما فهرستبندی میکند. به طور پیشفرض، لینوکس این پایگاه داده را به صورت دورهای از طریق یک کار پسزمینه بهروزرسانی میکند. با این حال، بهروزرسانی دستی پایگاه داده در صورت ایجاد تغییرات در سیستم فایل مهم است.
بهروزرسانی دستی پایگاه داده #
locateشما میتوانید با استفاده از دستور زیر، سیستم را به صورت دستی برای بهروزرسانی پایگاه داده فعال کنید .
$ sudo updatedbدستور بالا تضمین میکند که سیستم جدیدترین فایلها و دایرکتوریها را فهرستبندی میکند.
locateپایگاه داده را پیدا کنید #
locateبه طور پیشفرض، در اکثر سیستمهای لینوکس، پایگاه داده را در مسیر زیر پیدا خواهید کرد .
/var/lib/mlocate/mlocate.dbبا این حال، میتوانید هنگام جستجو با ارسال -dگزینه، فایل پایگاه داده متفاوتی را مشخص کنید:
$ locate -d /path/to/other/db patternدستور بالا به شما امکان میدهد پایگاههای داده سفارشی را مشخص کنید، به خصوص هنگام کار بر روی چندین سیستم فایل نصب شده یا اشتراکگذاری شبکه.
locateدستور نصب #
اکثر سیستمهای لینوکس این دستور را به طور پیشفرض از قبل نصب میکنند locate. با این حال، اگر این دستور را پیدا نکردید، مراحل زیر را برای نصب آن دنبال کنید.
- بررسی کنید که آیا
locateدستور نصب شده است یا خیر.کنسول$ locateاگر
locateنصب نشده باشد، دستور خروجی زیر را چاپ میکند.locate: command not found
نصب locateروی اوبونتو و دبیان #
locateبرای نصب در اوبونتو و دبیان مراحل زیر را دنبال کنید .
- فهرست اطلاعات بسته سیستم خود را بهروزرسانی کنید.کنسول
$ sudo apt update - بسته را نصب کنید
locate.کنسول$ sudo apt install plocateدستور بالا
plocateبستهای را نصب میکند که اینlocateدستور را در سیستمهای اوبونتو و دبیان ارائه میدهد.
نصب locateروی CentOS و Fedora #
locateبرای نصب روی CentOS و Fedora مراحل زیر را دنبال کنید .
- فهرست اطلاعات بسته سیستم خود را بهروزرسانی کنید.کنسول
$ sudo yum -y update - بسته را نصب کنید
locate.کنسول$ sudo yum install mlocateاین دستور
mlocate، بستهای را نصب میکند که اینlocateدستور را در سیستمهای CentOS و Fedora ارائه میدهد.
برای انتقال ایمن فایلها بین سیستمهای محلی و راه دور، دستور scp را در لینوکس برای مدیریت کارآمد فایل بررسی کنید.
locateسینتکس دستور #
دستور زیر یک locateسینتکس پایهای است:
locate [options] patternدر دستور بالا locate:
[options]: پرچمهای اختیاری را تعریف میکند که رفتار دستور را تغییر میدهند.pattern: نام فایل یا دایرکتوری مورد جستجو را مشخص میکند.
تنظیم فایلها و دایرکتوریهای نمونه #
برای ایجاد فایلها و دایرکتوریهای نمونه جهت آزمایش دستور، مراحل زیر را دنبال کنید locate.
- سه
.txtفایل خالی ایجاد کنید.کنسول$ touch negarnovin.txt negarnovin.txt NegarNovin.txt - دو
.exeفایل خالی ایجاد کنید.کنسول$ touch NEGARNOVIN.exe file.exe - یک
dirدایرکتوری و یک زیر دایرکتوری ایجاد کنید./path/to/parent/مسیر فعلی خود را جایگزین کنید.کنسول$ mkdir -p dir /path/to/parent/dir1/sub_dirدستور بالا
dirدایرکتوری وsub_dirزیر دایرکتوری را در زیر ایجاد میکند/path/to/parent/dir1/. این-pگزینه در صورت عدم وجود دایرکتوریهای والد، آنها را ایجاد میکند.دایرکتوری فعال کاری خود را پیدا کنید.
کنسول$ pwd
این دستور مسیر کامل دایرکتوری کاری شما را نمایش میدهد.
- یک فایل مانند ایجاد کنید
logfile.txtو برخی از دادههای نمونه را با یک ویرایشگر متن مانند بنویسیدNano.کنسول$ nano logfile.txt - محتویات زیر را به
logfile.txtفایل اضافه کنید.۲۰۲۴-۰۹-۰۱ ۰۹:۰۰:۰۰ ERROR User login failed ۲۰۲۴-۰۹-۰۱ ۱۰:۰۰:۰۰ INFO User profile updated ۲۰۲۴-۰۹-۰۱ ۱۱:۰۰:۰۰ ERROR Database connection error ۲۰۲۴-۰۹-۰۱ ۱۲:۰۰:۰۰ ERROR User login failed ۲۰۲۴-۰۹-۰۱ ۱۳:۰۰:۰۰ WARN Disk space low ۲۰۲۴-۰۹-۰۱ ۱۴:۰۰:۰۰ ERROR User login failedفایل را ذخیره کنید و ببندید.
رایجترین locateگزینهها #
در اینجا رایجترین locateگزینههای دستوری در لینوکس آورده شده است.
| گزینه | توضیحات |
|---|---|
-i | نادیده گرفتن تمایز حروف بزرگ و کوچک |
-c | فقط تعداد نام فایلهای منطبق را چاپ کن |
-n N | تعداد نتایج را به N محدود کنید |
-r | استفاده از عبارات منظم پایه برای تطبیق الگو |
--existing | فقط فایلهای موجود را چاپ کنید (فایلهای حذف شده را نادیده بگیرید) |
--regex | الگو را به عنوان یک عبارت منظم توسعهیافته تفسیر کنید |
-d | مشخص کردن پایگاه داده مورد استفاده |
--basename | فقط نام فایل پایه را مطابقت دهید |
--wholename | نام کل فایل را مطابقت دهید |
مثال های کاربردی از دستورات Run locateدر لینوکس #
برای یادگیری نحوه استفاده از locateدستور لینوکس، نمونههای زیر را اجرا کنید.
locateپایگاه داده را برای فهرستبندی هرگونه فایل و دایرکتوری جدید بهروزرسانی کنید .کنسول$ sudo updatedb- جستجوی یک فایل خاص با نام
negarnovin.txt.کنسول$ locate negarnovin.txtاین دستور تمام مسیرهایی را که
negarnovin.txtبا نام فایل مطابقت دارند فهرست میکند و تمام نمونههای موجود در پایگاه داده را نمایش میدهد.خروجی:

- یک جستجوی غیرحساس به حروف بزرگ و کوچک برای تمام فایلهای با نام انجام دهید
negarnovin.txt.کنسول$ locate -i negarnovin.txtnegarnovin.txtاین دستور یک جستجوی غیرحساس به حروف بزرگ و کوچک انجام میدهد، بنابراین نتایج را برای ،negarnovin.txtو سایر تغییرات حروف کوچک و بزرگ برمیگرداند .خروجی.

- تعداد فایلهایی که با مطابقت دارند را بشمارید
example.txt.کنسول$ locate -c example.txtاین دستور تعداد کل فایلهایی که با مطابقت دارند
example.txtرا بدون فهرست کردن آنها برمیگرداند.خروجی.

- نتایج جستجو را به
۱۰… محدود کنید.کنسول$ locate -n ۱۰ example.txt
این دستور خروجی را به اولین
۱۰تطابقها برای محدود میکندexample.txt.خروجی.

- جستجوی فایلهایی که با
.exeاستفاده از یک عبارت منظم به پایان میرسند.کنسول$ locate -r '\.exe$'
خروجی.

اجرای locateمثال های پیشرفته دستور #
برای اجرای جستجوهای پیشرفته با دستور، مراحل زیر را دنبال کنید locate.
- جستجوی دایرکتوری با نام
dir.کنسول$ locate -r '/dir$'
این دستور از یک عبارت منظم برای تطبیق دایرکتوریهایی که
dirدر انتهای مسیر مطابقت دارند استفاده میکند.خروجی.

- جستجوی تمام
.pdfفایلهای افزونه.کنسول$ locate -r '\.pdf$'
این دستور با استفاده از یک عبارت منظم، تمام فایلهایی را که
.pdfپسوند آنها در انتها مشخص شده است، پیدا میکند.خروجی.

- گزینههایی را برای جستجوی
.logفایلها، نادیده گرفتن موارد کوچک و محدود کردن نتایج به ترکیب کنید۵.کنسول$ locate -ir '\.log$' -n ۵
این دستور جستجویی بدون حساسیت به حروف بزرگ و کوچک برای فایلهایی که با
.logپسوند خاتمه مییابند انجام میدهد و نتایج را به ۵ محدود میکند.خروجی.

- برای استخراج فیلدهای خاص از نتایج جستجو،
locateبا را ترکیب کنید .awkکنسول$ locate logfile.txt | xargs grep -i 'error' | awk '{$۱=$۲=$۳=""; print substr($0, 4)}'
این دستور با استفاده از مسیر فایل را پیدا میکند ، در آن فایل با
locateجستجو میکند و با استفاده از تاریخ، زمان و سطح لاگ را از خروجی حذف میکند و فقط پیامهای خطا را نمایش میدهد.errorgrepawkخروجی.

- برای شمارش تطابقهای منحصر به فرد و مرتبسازی آنها،
locateباsortو ترکیب کنید .uniqکنسول$ locate logfile.txt | xargs cat | grep -i 'error' | sort | uniq -c | sort -nr
این دستور مسیر فایل را با استفاده از پیدا میکند
locateو محتویات آن را با نمایش میدهدcat. سپس این دستور به دنبال خطوطی که شاملerrorusing هستند میگرددgrepو این خطوط را به ترتیب حروف الفبا مرتب میکند و در عین حال تعداد دفعات وقوع هر پیام خطای منحصر به فرد را با شمارش میکندuniq -c. سپس این دستور تعداد خطاها را به ترتیب نزولی مرتب میکند و خطاهای پرتکرار را در بالا نشان میدهد.خروجی.

- برای انجام ویرایش درونخطی روی نتایج جستجو،
locateبا را ترکیب کنید .sedکنسول$ locate logfile.txt | xargs cat | sed 's/error/ERROR/g'
این دستور با استفاده از مسیر فایل را پیدا میکند
locate، محتویات آن را با نمایش میدهدcatو تمام موارد راerrorبا جایگزین میکند . این دستور حالت کلمه را در سراسر محتوای فایل تغییر میدهد.ERRORsederrorخروجی.

- برای ذخیره و نمایش خروجی به طور همزمان،
locateبا را ترکیب کنید .teeکنسول$ locate logfile.txt | xargs cat | grep 'ERROR' | tee output.txt
این دستور با استفاده از مسیر فایل را پیدا میکند
locate، محتویات آن را با استفاده از نمایش میدهد ، با استفادهcatاز خطوط حاوی عبارت را جستجو میکند و با استفاده از خطوط منطبق را در ترمینال و فایل مینویسد .ERRORgrepoutput.txtteeخروجی.

- فایلهای حاوی کلمه را جستجو کنید
logو نتایج را با استفاده ازgrepدستور فیلتر کنید.کنسول$ locate log | grep '/var/log'
دستور بالا ابتدا تمام نام فایلهای حاوی را پیدا میکند
logو سپس خروجی را به pipe میکند تاgrepنتایج را فیلتر کند و فقط فایلهای موجود در/var/logدایرکتوری را نشان دهد.خروجی.

- تمام فایلهایی که
negarnovin.txtبا ترکیبlocateبا مطابقت دارند را حذف کنیدxargs.کنسول$ locate negarnovin.txt | xargs rm -f
این دستور تمام فایلهای نامگذاری شده را پیدا میکند
negarnovin.txtو لیست را به منتقل میکندxargs، که سپس فایل را با استفاده ازrm -fدستور حذف میکند.خروجی.

locateبرای جستجوی فایلها و اجرای اقدامات پیشرفته با استفاده از `find` استفاده کنید .کنسول$ locate negarnovin.txt | xargs -I {} find {} -type f -exec ls -l {} \;
دستور بالا تمام فایلهای نامگذاری شده را پیدا میکند
negarnovin.txtو لیستی راfindکه روی هر فایل اجرا میشود،ls -lبرای نمایش اطلاعات دقیق، به آن ارسال میکند.خروجی.

تنظیم locateمتغیرهای محیطی فرمان #
متغیرهای محیطی لینوکس زیر بر این locateدستور تأثیر میگذارند.
LOCATE_PATH: مسیر پایگاهlocateداده را مشخص میکند.LOCATE_CONFIG: مسیرlocateفایل پیکربندی را مشخص میکند.
متغیرLOCATE_PATH #
این متغیر محیطی به شما امکان میدهد یک مسیر سفارشی برای locateپایگاه داده تعریف کنید. به طور پیشفرض، locateدر پایگاه داده از پیش پیکربندی شده خود، که معمولاً در قرار دارد، جستجو میکند /var/lib/mlocate/mlocate.db.
locateشما میتوانید با اجرای دستور زیر، مسیر پایگاه دادهی متفاوتی را تنظیم کنید . سپس locateبرای جستجو example.txtدر آن پایگاه داده، دستور زیر را اجرا کنید.
$ export LOCATE_PATH='/var/lib/plocate/plocate.db'
$ locate example.txtمتغیرLOCATE_CONFIG #
این متغیر محیطی، مسیر فایل پیکربندی سفارشی را مشخص میکند که نحوه locateرفتار را تعیین میکند. فایل پیکربندی پیشفرض، پارامترهای مهمی مانند اینکه کدام دایرکتوریها از پایگاه داده حذف شوند یا کدام فایلها در طول جستجو نادیده گرفته شوند را کنترل میکند. با سفارشیسازی این فایل، میتوانید locateرفتار دستور را برای برآورده کردن نیازهای خاص خود به طور دقیق تنظیم کنید.
اگرچه در مقایسه با کمتر مورد استفاده قرار میگیرد LOCATE_PATH، این LOCATE_CONFIGمتغیر هنگام کار در محیطهایی که پیکربندی پیشفرض با نیازهای شما مطابقت ندارد، مفید است. میتوانید متغیر را به یک فایل پیکربندی سفارشی ارجاع دهید که نحوه بهروزرسانی پایگاه داده، مسیرهای فهرستبندی شده و موارد دیگر را تعریف میکند.
LOCATE_CONFIGبا اجرای دستور زیر میتوانید متغیر را مقداردهی کنید .
$ export LOCATE_CONFIG='/path/to/my/locate.conf'استفاده locateبا دستورات mlocateوslocate #
mlocateو slocateدستورات، انواع مختلفی از locateدستور هستند، اما ویژگیها و امنیت بیشتری ارائه میدهند. این دستورات اغلب به جای یکدیگر استفاده میشوند locate.
دستور mlocate(ادغام مکان) #
mlocateنوعی از locateآن است که فقط بخشهایی از پایگاه داده که تغییر کردهاند را بهروزرسانی میکند. این امر باعث میشود بهروزرسانی پایگاه داده، بهویژه در سیستمهایی با فایلهای زیاد، سریعتر و کارآمدتر باشد. mlocateویژگیهای پیشرفته حریم خصوصی تضمین میکند که کاربران فقط میتوانند فایلهایی را پیدا کنند که اجازه دیدن آنها را دارند.
مثال mlocateدستور.
$ sudo updatedb.mlocate
$ locate example.txtدستور اول بالا mlocateپایگاه داده را بهروزرسانی میکند و دستور بعدی در پایگاه داده locateبه دنبال موارد زیر میگردد.example.txt
دستور slocate(مکانیابی امن) #
slocateنوع دیگری از locateدستور است که بر امنیت تأکید دارد. این دستور تضمین میکند که کاربران فقط میتوانند نتایج مربوط به فایلهایی را ببینند که مجوزهای لازم برای دسترسی به آنها را دارند. این امر به ویژه در محیطهای چند کاربره که کاربران نباید بتوانند فایلهایی را که به آنها دسترسی ندارند پیدا کنند، مفید است. slocateشامل بررسیهای پیشرفتهتر مجوزهای فایل هنگام ایجاد پایگاه داده و جستجوی فایلها است.
مثال slocateدستور.
$ sudo updatedb.slocate
$ locate example.txtدرست مانند mlocate، updatedb.slocateدستور پایگاه داده را بهروزرسانی میکند و سپس از locateدستور برای انجام جستجوی شما استفاده میکند. تفاوت کلیدی در نحوه فیلتر کردن نتایج بر اساس مجوزهای کاربر است که ممکن است در مقایسه با یک استاندارد، نتایج کمتری ارائه دهد locate.
نتیجه گیری #
در این مقاله، شما این دستور را در لینوکس نصب کردید locate، سینتکس دستور، گزینههای دستور و مثالهای عملی را پوشش دادید. با استفاده از این locateدستور، میتوانید به سرعت و به طور موثر فایلها و دایرکتوریها را در سیستم خود جستجو کنید. با استفاده از locateموارد استفاده پیشرفته دستور، میتوانید جستجوی خود را بهبود بخشیده و گردش کار خود را در لینوکس ساده کنید.














