📄 محتوای کامل
مقدمه
دستور 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فایل اضافه کنید.2024-09-01 09:00:00 ERROR User login failed 2024-09-01 10:00:00 INFO User profile updated 2024-09-01 11:00:00 ERROR Database connection error 2024-09-01 12:00:00 ERROR User login failed 2024-09-01 13:00:00 WARN Disk space low 2024-09-01 14:00:00 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با نام فایل مطابقت دارند فهرست میکند و تمام نمونههای موجود در پایگاه داده را نمایش میدهد.خروجی:
سرور لینوکس” width=”۶۰۰″ height=”۱۷۰″ />
- یک جستجوی غیرحساس به حروف بزرگ و کوچک برای تمام فایلهای با نام انجام دهید
negarnovin.txt. کنسولکپی$ locate -i negarnovin.txt
negarnovin.txtاین دستور یک جستجوی غیرحساس به حروف بزرگ و کوچک انجام میدهد، بنابراین نتایج را برای ،negarnovin.txtو سایر تغییرات حروف کوچک و بزرگ برمیگرداند .خروجی.
- تعداد فایلهایی که با مطابقت دارند را بشمارید
example.txt. کنسولکپی$ locate -c example.txt
این دستور تعداد کل فایلهایی که با مطابقت دارند
example.txtرا بدون فهرست کردن آنها برمیگرداند.خروجی.
- نتایج جستجو را به
10… محدود کنید. کنسولکپی$ locate -n 10 example.txt
این دستور خروجی را به اولین
10تطابقها برای محدود میکندexample.txt.خروجی.
- جستجوی فایلهایی که با
.exeاستفاده از یک عبارت منظم به پایان میرسند. کنسولکپی$ locate -r '.exe$'
خروجی.
اجرای locateمثال های پیشرفته دستور
برای اجرای جستجوهای پیشرفته با دستور، مراحل زیر را دنبال کنید locate.
- جستجوی دایرکتوری با نام
dir. کنسولکپی$ locate -r '/dir$'
این دستور از یک عبارت منظم برای تطبیق دایرکتوریهایی که
dirدر انتهای مسیر مطابقت دارند استفاده میکند.خروجی.
- جستجوی تمام
.pdfفایلهای افزونه. کنسولکپی$ locate -r '.pdf$'
این دستور با استفاده از یک عبارت منظم، تمام فایلهایی را که
.pdfپسوند آنها در انتها مشخص شده است، پیدا میکند.خروجی.
- گزینههایی را برای جستجوی
.logفایلها، نادیده گرفتن موارد کوچک و محدود کردن نتایج به ترکیب کنید5. کنسولکپی$ locate -ir '.log$' -n 5
این دستور جستجویی بدون حساسیت به حروف بزرگ و کوچک برای فایلهایی که با
.logپسوند خاتمه مییابند انجام میدهد و نتایج را به ۵ محدود میکند.خروجی.
- برای استخراج فیلدهای خاص از نتایج جستجو،
locateبا را ترکیب کنید .awkکنسولکپی$ locate logfile.txt | xargs grep -i 'error' | awk '{$1=$2=$3=""; 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موارد استفاده پیشرفته دستور، میتوانید جستجوی خود را بهبود بخشیده و گردش کار خود را در لینوکس ساده کنید.