نحوه استفاده از دستور Find در لینوکس #
مقدمه #
دستور find در لینوکس یک ابزار قدرتمند و همه کاره برای جستجو یا یافتن فایلها و دایرکتوریها در یک سیستم فایل است. این دستور از ویژگیهای فایل مانند نام، اندازه، زمان و مجوزها برای انجام جستجو استفاده میکند. همچنین میتوانید find را با دستورات دیگر ترکیب کنید تا جستجوهای پیچیدهای انجام دهید.
این مقاله نحوه استفاده از دستور findدر لینوکس را برای مدیریت و جستجوی مؤثر فایلها توضیح میدهد.
سینتکس دستور find #
در زیر سینتکس اولیه دستور find آمده است:
find [path] [expression]در دستور find بالا:
[path]: دایرکتوری مورد جستجو را مشخص میکند. اگر مسیری را مشخص نکنید، به طور پیشفرض دایرکتوری کاری را در نظر میگیرد.[expression]: گزینهها، آزمایشها و اقدامات را برای فیلتر کردن و دستکاری نتایج جستجو مانند نام فایل، نوع فایل، اندازه و زمان اصلاح ترکیب میکند.
تنظیم دایرکتوریها و فایلهای نمونه #
برای تنظیم دایرکتوریها و فایلهای نمونه جهت آزمایش دستور find ، مراحل زیر را دنبال کنید.
- به دایرکتوری خانگی کاربر خود بروید.console
$ cd
- فایلهای نمونه
negarnovin.txt,negarnovin.txt, وNEGARNOVIN.txtایجاد کنید.console$ touch negarnovin.txt Negarnovin.txt NEGARNOVIN.txt - دایرکتوریهای
dir,dir1را ایجاد کنید. سپس یک زیردایرکتوریsub_dirدر زیر دایرکتوریdir1ایجاد کنید.console$ mkdir -p dir dir1/sub_dir - یک فایل متنی جدید با نام
file.txtایجاد کنید.console$ touch file.txt - سطح دسترسی فایل
file.txtرا به۷۵۵تغییر دهید.console$ chmod ۷۵۵ file.txt
نحوه استفاده از دستور tar در لینوکس را برای بایگانی سریع فایل و خارج کردن از حالت فشرده بررسی کنید.
رایجترین گزینههای دستور find #
دستور findاز گزینههای زیر برای اصلاح نتایج جستجو پشتیبانی میکند.
| گزینه | توضیحات |
|---|---|
-name | فایلها و دایرکتوریهایی با نام خاص را جستجو میکند. |
-iname | نسخه غیر حساس به حروف بزرگ و کوچک -name. |
-type | جستجوی فایلهایی از یک نوع خاص (f برای فایلهای معمولی، dبرای دایرکتوریها). |
-size | فایلهایی با اندازه خاص را جستجو میکند (برای مثال، +100M برای فایلهای بزرگتر از ۱۰۰ مگابایت). |
-mtime | جستجوی فایلهای تغییر یافته در تعداد مشخصی از روز (برای مثال، -۷ برای فایلهای تغییر یافته در ۷ روز گذشته). |
-atime | فایلهایی را که در تعداد مشخصی از روز به آنها دسترسی پیدا شده است، جستجو میکند. |
-user | فایلهای متعلق به یک کاربر خاص را جستجو میکند. |
-group | فایلهای متعلق به یک گروه خاص را جستجو میکند. |
-perm | فایلهایی با مجوزهای خاص (مثلاً ۷۵۵) را جستجو میکند. |
-exec | یک دستور را روی هر فایل منطبق اجرا میکند. |
-delete | فایلهای منطبق را حذف میکند. |
-ls | فایلهای منطبق را با فرمت ls -dils فهرست میکند. |
-print | نام کامل فایل را در خروجی استاندارد چاپ میکند. |
استفاده عملی از دستور find در لینوکس با مثال #
برای آزمایش دستور find و جستجوی فایلهای نمونهای که قبلاً ایجاد کردهاید، مراحل زیر را دنبال کنید.
- فایلی با نام
negarnovin.txtرا در دایرکتوری کاری و زیرشاخههای آن پیدا کنید.console$ find . -name "negarnovin.txt"
خروجی:

دستور Find در لینوکس - یک جستجوی غیرحساس به حروف بزرگ و کوچک برای تمام فایلهایی که با
negarnovin.txtمطابقت دارند، انجام دهید.console$ find . -iname "negarnovin.txt"
خروجی:
- با استفاده از گزینه
-type d، تمام دایرکتوریهای موجود در دایرکتوری کاری را پیدا کنید.console$ find . -type dخروجی:

دستور Find در لینوکس - پیدا کردن فایلها بر اساس اندازه. برای مثال، فایلهای بزرگتر از
100MB.console$ find . -size +100Mخروجی:

- پیدا کردن فایلها بر اساس زمان تغییر. برای مثال، پیدا کردن فایلهایی که در ۷ روز گذشته تغییر کردهاند.console
$ find . -mtime -7خروجی:

- پیدا کردن همه فایلها بر اساس زمان دسترسی. برای مثال، پیدا کردن همه فایلهایی که در ۷ روز گذشته به آنها دسترسی پیدا شده است.console
$ find . -atime -7خروجی:

- تمام فایلهایی که یک کاربر خاص دارد، مانند
negarnovin_userرا پیدا میکند.console$ find . -user negarnovin_userخروجی:

- تمام فایلهای متعلق به یک گروه خاص مانند
negarnovin_userرا پیدا کنید.console$ find . -group negarnovin_userخروجی:

- پیدا کردن تمام فایلهایی که سطح دسترسی
۷۵۵دارند.console$ find . -perm ۷۵۵
مجوز
۷۵۵به این معنی است که مالک میتواند فایل را بخواند، بنویسد و اجرا کند، در حالی که دیگران فقط میتوانند آن را بخوانند و اجرا کنند..خروجی:

دستور Find در لینوکس
استفاده از گزینههای پیشرفتهی دستور find #
برای انجام جستجوهای پیشرفته با دستور find ، مراحل زیر را دنبال کنید.
- با استفاده از گزینه
-exec، یک دستور را روی هر فایل منطبق اجرا کنید.console$ find . -name "negarnovin.txt" -exec ls -l {} \;
دستور بالا تمام فایلهایی با نام
negarnovin.txtرا پیدا میکند و دستورls -lرا روی هر فایل اجرا میکند تا آنها را در قالبی طولانی فهرست کند.{}یک مکاننگهدار برای نام فایل کاری است و\;انتهای دستور را برای اجرا مشخص میکند.خروجی:

- تمام فایلهای با نام
negarnovin.txtرا حذف کنید.console$ find . -name "negarnovin.txt" -delete
خروجی:

- تمام فایلهای
.txtرا پیدا کرده و آنها را در یک دایرکتوری دیگر کپی کنید.console$ find . -name "*.txt" -exec cp {} /path/to/directory/ \;
دستور بالا تمام فایلهای
.txtرا پیدا کرده و آنها را در دایرکتوری/path/to/directory/کپی میکند. نام فایل در حین اجرا جایگزین{}میشود./path/to/directoryرا با مسیر واقعی خود جایگزین کنید.
- تمام فایلهای
.txtرا پیدا کرده و آنها را به دایرکتوری دیگری منتقل میکند.console$ find . -name "*.txt" -exec mv {} /path/to/directory/ \;
دستور بالا تمام فایلهای
.txtرا پیدا کرده و آنها را به دایرکتوری/path/to/directory/منتقل میکند. نام فایل در حین اجرا جایگزین{}میشود./path/to/directoryرا با مسیر واقعی خود جایگزین کنید.خروجی:

- تمام فایلهای
.txtمتعلق به یک کاربر خاص، مانندnegarnovin_userو فایلهایی که در ۷ روز گذشته تغییر کردهاند را پیدا کنید.console$ find . -name "*.txt" -user negarnovin_user -mtime -7
دستور بالا تمام فایلهای
.txtمتعلق به کاربرnegarnovin_userکه در ۷ روز گذشته تغییر یافتهاند را جستجو میکند. این دستور گزینههای-name,-user, و-mtimeرا برای ایجاد جستجوی دقیقتر ترکیب میکند.خروجی:

اجرای دستور Interactive find در لینوکس به همراه مثال #
برای انجام جستجوهای تعاملی با استفاده از دستور find ، مراحل زیر را دنبال کنید.
- تمام فایلهایی با نام
negarnovin.txtرا پیدا کنید و اطلاعات دقیق آنها را فهرست کنید.console$ find . -name "negarnovin.txt" -exec ls -l {} \;
دستور بالا تمام فایلهایی با نام
negarnovin.txtرا پیدا میکند و ازls -lبرای نمایش اطلاعات دقیق در مورد هر فایل، مانند مجوزها، مالک، اندازه و تاریخ تغییر استفاده میکند.خروجی:

- دستور
findرا باwcترکیب کنید تا تمام فایلهایی با نامnegarnovin.txtرا پیدا کرده و تعداد خطوط آنها را بشمارید.console$ find . -name "negarnovin.txt" | wc -l
دستور بالا تمام فایلهایی با نام
negarnovin.txtرا پیدا میکند و از گزینه pipe (|) برای نمایش نتایج به دستورwc -lاستفاده میکند که تعداد خطوط منطبق را شمارش میکند.خروجی:

- تمام فایلهایی که سطح دسترسی
۶۴۴دارند را پیدا کرده و به۶۰۰تغییر دهید.console$ sudo find . -perm ۶۴۴ -exec chmod ۶۰۰ {} \;
دستور بالا تمام فایلهایی که سطح دسترسی
۶۴۴دارند را پیدا میکند و با استفاده از دستورchmodسطح دسترسی را به۶۰۰تغییر میدهد. گزینه{}نشاندهنده نام فایل است، در حالی که\;پایان دستور را مشخص میکند.
نتیجه گیری #
شما با مثالهای عملی از دستور find در لینوکس برای جستجوی کارآمد فایلها و دایرکتوریها استفاده کردید. دستور find جستجوها را بر اساس معیارهای خاص انجام میدهد و اقدامات خاصی را روی نتایج منطبق اجرا میکند تا گردش کار سیستم فایل شما را سادهتر کند.
















