دستور FIND لینوکس با مثال

آیا می دانید چند فایل در یک نصب جدید لینوکس(Linux) وجود دارد ؟ اگر از PopOS استفاده می کنید! توزیع لینوکس(Linux distribution) به عنوان مثال، بیش از 31000 فایل وجود دارد. این قبل از شروع ایجاد هرگونه سند، ذخیره موسیقی، دانلود PDF(PDFs) یا سازماندهی تصاویر است.

به همین دلیل، پیدا کردن فایل یا پوشه مناسب در لینوکس(Linux) زمانی که به آن نیاز دارید به یک چالش تبدیل می شود. در این مقاله، نحوه استفاده از دستور FIND لینوکس(Linux FIND) را یاد خواهید گرفت و ما قصد داریم تمام نمونه هایی را که می توانیم به شما ارائه دهیم.

دستور FIND لینوکس(Linux FIND Command Syntax)

نحو به نحوه کنار هم قرار دادن کلمات یا دستورات اشاره دارد. همانطور(Just) که یک جمله معمولی می تواند با به هم زدن کلمات تبدیل به مزخرف شود، دستورات نیز اگر در نحو مناسب استفاده نشوند ممکن است با شکست مواجه شوند.

پیدا کردن [مسیر] [شرایط] [عملکرد](find [path] [conditions] [actions])

معنی آن این است:

find – ابزار Find را در (Find)لینوکس راه اندازی می کند(Linux)

مسیر(path ) - کجا باید نگاه کرد

شرایط(conditions ) - آرگومان هایی که می خواهید در جستجو اعمال کنید

اقدامات(actions ) - آنچه می خواهید با نتایج انجام دهید

یک مثال ساده با استفاده از هر سه به نظر می رسد:

پیدا کردن . -name file-sample.rtf -print(find . -name file-sample.rtf -print)

همانطور که حدس زدید، نام فایل file-sample.rtf(file-sample.rtf) را پیدا می کند. 

مسیر نقطه ( . ) به find می گوید که در دایرکتوری فعلی و هر دایرکتوری داخل آن جستجو کنید. 

شرط -name به find می گوید که فایلی با آن نام خاص دریافت کند.

عمل چاپ به FIND(-print ) می گوید که نتایج را روی صفحه نمایش دهد.

نقطه و -print پیش فرض برای دستور find هستند. بنابراین اگر از آنها استفاده نکنید باز هم همان کار را انجام می دهد. بنابراین، find -name file-sample.rtf نتایج یکسانی را به شما خواهد داد.

لینوکس در یک فهرست دیگر پیدا کنید(Linux FIND In Another Directory)

می توانید در دایرکتوری متفاوت از دایرکتوری که در آن هستید جستجو کنید. فقط(Just) مسیر دایرکتوری را بعد از FIND وارد کنید. اگر در ریشه هستید و می‌دانید که فایل در جایی در پوشه home/user قرار دارد ، باید از آن استفاده کنید:

find home/user -name file-sample.rtf

این هنوز یک جستجوی بازگشتی است، بنابراین از هر فهرست زیر کاربر(user) عبور می کند.

لینوکس FIND دایرکتوری های متعدد را جستجو کنید(Linux FIND Search Multiple Directories)

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

find /lib /var /bin -name file-sample.rtf

لینوکس FIND بدون بازگشت یا محدودیت بازگشت(Linux FIND with No Recursion or Limiting Recursion)

اگر از دستور FIND بالا در سطح ریشه استفاده می‌کردید، تمام دایرکتوری‌های سیستم را بررسی می‌کرد. بنابراین اگر می خواهید فقط به دایرکتوری فعلی بچسبید، از گزینه -maxdepth استفاده کنید. عدد بعد از -maxdepth به شما می گوید قبل از توقف تا چه حد عمیق بروید. 

استفاده از -maxdepth 1 به معنای این دایرکتوری است. 

-name file-sample.rtf -maxdepth 1 را پیدا کنید(find -name file-sample.rtf -maxdepth 1)

استفاده از -maxdepth 2 یا بیشتر به این معنی است که به همین میزان سطوح عمیق تر می شوید.

find -maxdepth 5 -name file-sample.rtf

لینوکس FIND Wildcard مثال(Linux FIND Wildcard Example)

دستور FIND از ستاره ( * ) به عنوان علامت عام استفاده می کند. از آن برای هر بخشی از نام که مطمئن نیستید استفاده کنید. می توان آن را بیش از یک بار در نام استفاده کرد. بدون نوع فایل به عنوان بخشی از نام فایل، نتایج شامل دایرکتوری هایی می شود که مطابقت دارند.

find home/user -name file*sample*

Linux FIND by Type Example

فقط برای جستجوی یک فایل یا یک فهرست، از گزینه -type و توصیفگر مناسب استفاده کنید. تعداد کمی وجود دارد، اما فایل ها و دایرکتوری ها رایج ترین هستند:

f – فایل

د – دایرکتوری

ب – دستگاه بلوک

ج – دستگاه کاراکتر

ل - پیوند نمادین

s – سوکت

find home/user -name file*sample* -type d

لینوکس FIND Case Insensitive مثال(Linux FIND Case Insensitive Example)

برخلاف ویندوز(Windows) ، لینوکس(Linux) به بزرگ یا کوچک بودن یک حرف اهمیت می دهد. بنابراین اگر می‌خواهید هم برای File-Sample.rtf و هم file-sample.rtf جستجو کند، از گزینه -iname استفاده کنید.

find home/user -iname File-Sample.rtf

لینوکس FIND چند فایل مثال(Linux FIND Several Files Example)

فرض کنید می‌خواستید نسخه‌های rtf. و .html یک فایل را پیدا کنید. این را می توان در یک دستور با استفاده از عملگر -o (یا) انجام داد. در برخی از توزیع‌ها، ممکن است لازم باشد نام‌ها را در داخل پرانتز قرار دهید، مانند ( -name file-sample.rtf -o -name file-sample.html )

find home/user -name file-sample.rtf -o -name file-sample.html

لینوکس فایل هایی را پیدا کنید که با نامی مطابقت ندارند(Linux FIND Files That Don’t Match a Name)

شاید می دانید که نسخه html یک فایل وجود دارد، اما اگر فایل دیگری وجود داشته باشد، نه. می توانید با استفاده از گزینه -not نسخه html را از جستجو خارج کنید (.html).

find home/user -name file-sample* -not -name *.html

لینوکس FIND بدون نتایج خطا(Linux FIND Without Error Results)

در مثال یافتن بدون بازگشت، توجه کنید که هر فهرستی را که نمی‌توانست در آن جستجو کند و نتیجه صحیح را فهرست می‌کند. آزاردهنده است. اجازه دهید آن را از نمایش همه آن دایرکتوری های " مجوز رد شده" متوقف کنیم. (Permission)آن را با یک دستور ترمینال لینوکس(Linux terminal command) دیگر ، grep ترکیب کنید. همچنین می‌توانید از Find with grep برای یافتن فایل‌هایی با کلمات خاص در آنها(find files with specific words in them) استفاده کنید .

find -maxdepth 5 -name file-sample.rtf 2>&1 | grep -v “Permission denied”

بیایید 2>&1 را تجزیه کنیم .

2 - نشان دهنده stderr است که مخفف خروجی خطاهای استاندارد است. 

1 - نشان دهنده stdout است که مخفف خروجی استاندارد است

> – یعنی تغییر مسیر هر خروجی در سمت چپ آن به هر آنچه در سمت راست آن است.

& – به معنای کنار هم قرار دادن است.

بنابراین 2>&1 یعنی خطاهای استاندارد را بگیرید و آنها را تغییر مسیر دهید و سپس آنها را با خروجی استاندارد در یک خروجی قرار دهید.

حالا بیایید نگاهی به | grep -v “Permission denied” .

| (به نام لوله) - به لینوکس(Linux) می گوید که نتایج هر چیزی را که در سمت چپ آن قرار دارد به هر چیزی که در سمت راست آن است تغذیه کند. به دستور grep داده می شود.

grep – یک ابزار جستجوی متنی است. 

-v – به grep می گوید هر چیزی را که با متنی در سمت چپ -v مطابقت ندارد جستجو کند. در این مورد، به grep می‌گوید که فقط هر چیزی را پیدا کند که حاوی متن یا رشته نباشد، « مجوز(Permission) رد شد». بنابراین grep فقط نتایجی را که به دنبال آن هستید و خطاهایی که مطابق با « مجوز(Permission) رد شده» را به شما نشان می‌دهد.

Linux FIND by Permissions مثال(Linux FIND by Permissions Example)

برای استفاده خوب از این، باید مجوزهای لینوکس را یاد بگیرید(learn Linux permissions)

فایل های نمونه همه دارای مجوزهای 664 هستند، به جز یکی با مجوزهای 775. برای یافتن آن از گزینه -perm استفاده کنید.

find Documents/ -name file-sample* -type f -perm 775

لینوکس FIND بر اساس اندازه مثال(Linux FIND by Size Example)

یافتن فایل ها بر اساس اندازه برای پر کردن هارد دیسک شما توسط آن فایل های بزرگ مفید است. از گزینه -size، اندازه دلخواه و یکی از پسوندهای زیر استفاده کنید. اگر از هیچ پسوندی استفاده نمی شود، -size به طور پیش فرض روی b قرار می گیرد. برای پیدا کردن فایل‌های مساوی و بزرگ‌تر از اندازه معین، علامت مثبت (+) را جلوی اندازه قرار دهید.

M - مگابایت

G – گیگابایت

k - کیلوبایت

b - بلوک ها (512 بایت - پیش فرض)

ج – بایت

w – کلمات (دو بایت با هم)

find -size +500k

Linux FIND توسط Owner(Linux FIND by Owner)

دو راه برای یافتن فایل ها توسط مالک وجود دارد. یکی با نام کاربری مالک و دیگری توسط گروه کاربر است. برای یافتن بر اساس نام کاربری، از گزینه -user و به دنبال آن نام کاربری استفاده کنید. برای یافتن بر اساس گروه کاربری، از -group و سپس نام گروه استفاده کنید.

find -user groupname یا find -user username

لینوکس فایل‌ها را با استفاده از آخرین نمونه اصلاح شده پیدا کنید(Linux FIND Files by Last Modified Example)

برای یافتن فایل‌هایی که در آخرین X روز تغییر یا ویرایش شده‌اند، از -mtime و سپس یک عدد استفاده کنید. با قرار دادن علامت منفی ( ) در جلوی عدد، هر چیزی که در چند روز قبل از آن تغییر کرده است را پیدا خواهید کرد. علامت بعلاوه ( + ) به معنای چند روز قبل از این است. 

find -name “file-sample*” -mtime +5 (greater than 5 days ago)

find -name “file-sample*” -mtime -5 (less than 5 days ago)

برای پیدا کردن آخرین تغییر در دقیقه، از گزینه -mmin و سپس تعداد دقیقه استفاده کنید. از + و – مانند بالا استفاده کنید.

find -name “file-sample*” -mmin -5

find -name “file-sample*” -mmin +5

لینوکس FIND فایل ها را بر اساس آخرین زمان دسترسی مثال(Linux FIND Files by Last Accessed TIme Example)

گزینه ای که برای یافتن فایل ها بر اساس آخرین زمان باز شدن آنها استفاده می شود، -atime برای روزها و -amin برای دقیقه است. آن را با تعداد روز یا دقیقه برای بازگشت دنبال کنید و از علامت + و – به عنوان بزرگتر و کمتر از استفاده کنید.

find -name “file-sample*” -atime -5

find -name “file-sample* -amin -5

FIND را با سایر دستورات لینوکس ترکیب کنید(Combine FIND with Other Linux Commands)

یک مثال بالا از استفاده از find با دستور grep وجود دارد، و می‌توانید از آن با بسیاری دیگر استفاده کنید. می بینید که استفاده از دستورات Find و سایر دستورات می تواند بسیار قدرتمند و صرفه جویی زیادی در زمان باشد. تصور کنید(Imagine) که باید دسته ای از یک نوع فایل خاص را حذف کنید. به جای جستجوی اطراف در فایل اکسپلورر، فقط دستور درست را ایجاد کنید، و این کار در چند ثانیه انجام می شود. اکنون چگونه از دستور find استفاده خواهید کرد؟



About the author

من یک مهندس نرم افزار با تجربه در Xbox Explorer، Microsoft Excel و Windows 8.1 Explorer هستم. در اوقات فراغت دوست دارم بازی های ویدیویی انجام دهم و تلویزیون تماشا کنم. من از دانشگاه یوتا مدرک دارم و در حال حاضر به عنوان مهندس نرم افزار برای یک شرکت بین المللی کار می کنم.



Related posts