جستجوی لینوکس بر اساس شرایط لغو می شود. دستور Find: یافتن قدرتمند فایل ها در لینوکس. نمای کلی درخت دایرکتوری

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

یک فایل را با نام در پایگاه داده جستجو کنید.
از دستور locate می توان برای جستجوی فایل(ها) بر اساس بخشی از نام فایل استفاده کرد. این دستور پایگاه داده اسامی را اسکن می کند و مسیر فایل(های) جستجو شده را می دهد. توصیه می کنیم دستور را با گزینه -i اجرا کنید: locate -i برای جستجوی بدون حروف بزرگ.
مثال:

[ایمیل محافظت شده]:~$ مکان یابی -i .ogg
/home/subsanek/ناشناس - ناشناخته/01 - ناشناخته 1 - ???.ogg
/usr/local/Zend/ZendStudio-7.1.2/docs/PHPmanual/book.oggvorbis.html
/usr/local/Zend/ZendStudio-7.1.2/docs/PHPmanual/intro.oggvorbis.html
/usr/share/kde4/apps/bball/bounce.ogg
/usr/share/kde4/apps/klettres/en_GB/alpha/a.ogg
/usr/share/kde4/apps/klettres/en_GB/alpha/b.ogg
/usr/share/kde4/apps/klettres/en_GB/alpha/c.ogg
(قطع شده)


-command call تمام فایل های روی سیستم با پسوند ogg را پیدا کرد.
جستجوی فایل‌ها را خیلی سریع پیدا کنید، اما فقط به فهرستی از نام‌ها از پایگاه داده نگاه می‌کند، و اگر فایل جدید باشد، احتمال زیادی وجود دارد که پیدا نشود.
به روز رسانی پایگاه داده.
می توانید پایگاه داده دستور locate را با دستور (به عنوان root) به روز کنید:
updatedb
خروجی قابل خواندن
غالباً دستور locate می تواند نتیجه چند هزاری بدهد که فقط جلوی صفحه چشمک می زند و هیچ کاری برای چشمان شما نمی کند، برای جلوگیری از این امر، می توانید نتیجه خروجی را به ظرف تغییر دهید:
locate -i .ogg | کمتر
همچنین می توانید تعیین کنید که چه تعداد نتیجه با گزینه -n نمایش داده شود:
مکان -i .ogg -n 10
- نمایش 10 نتیجه اول.

جستجوی فایل ها با اسکن واقعی
دستور find سیستم فایل را برای یافتن یک فایل اسکن می کند، که این ابزار را کند اما کارآمد می کند.
برای جستجو بر اساس نام، باید کلید -name را مشخص کنید
مثال:
find -name filename.txt
به طور پیش فرض، جستجوها را به صورت بازگشتی در فهرست فعلی پیدا کنید.

جستجوی متن بر اساس قطعه متن
فرمان افسانه ای grep می تواند تقریباً هر هدفی را انجام دهد. من دوست دارم از آن نه تنها برای یافتن فایل های مناسب در فهرست منبع استفاده کنم. همچنین می توانید از grep برای جستجوی عبارات منظم استفاده کنید.
نمونه اولیه فرمان:
grep "الگوی جستجو" file_to_search
مثال:
grep -R "متن" /
-command به صورت بازگشتی در تمام فایل های متنی سیستم کلمه متن را جستجو می کند.
Grep تعداد قابل توجهی از گزینه ها دارد که ممکن است اغلب به آنها نیاز داشته باشید:

[ایمیل محافظت شده]:~$ grep --help
استفاده: grep [KEY]... PATTERN [FILE]...
PATTERN را در هر فایل یا ورودی استاندارد جستجو کنید.
به طور پیش فرض، PATTERN یک عبارت منظم ساده (BRE) است.
مثال: grep -i "hello world" menu.h main.c

انتخاب نوع عبارت منظم و تفسیر آن:
-E، --extended-regexp PATTERN - عبارت منظم توسعه یافته (ERE)
-F، --fixed-regexp PATTERN - رشته های با طول ثابت جدا شده اند
شخصیت خط جدید
-G، --basic-regexp PATTERN - عبارت منظم ساده (BRE)
-P، --perl-regexp PATTERN - عبارات منظم پرل
-e، --regexp=PATTERN از PATTERN برای جستجو استفاده کنید
-f، --file=FILE PATTERN را از FILE بگیرید
-i، --ignore-case ignore case تفاوت
-w، --word-regexp PATTERN باید با همه کلمات مطابقت داشته باشد
-x، --line-regexp PATTERN باید با کل خط مطابقت داشته باشد
رشته های -z، -null-data با یک بایت تهی جدا می شوند، نه
پایان دهنده خط

علاوه بر این:
-s، --no-messages پیام های خطا را سرکوب می کنند
-v، --rever-match خطوط بی همتا را انتخاب کنید
-V، --نسخه نمایش اطلاعات نسخه و خروج
- کمک به نشان دادن کمک و خروج
--mmap در صورت امکان از نگاشت حافظه (mmap) استفاده کنید

مدیریت خروجی:
-m، --max-count=NUM توقف پس از NUM مطابق مشخص شده
-b، --byte-offset چاپ افست در
بایت ها
-n، --line-number شماره خط را همراه با خطوط خروجی چاپ کنید
---line-buffered flush buffer بعد از هر خط
-H، --with-filename نام فایل چاپی برای هر مسابقه
-h، --no-filename خروجی را از نام فایل شروع نکنید
--label=LABEL خروجی LABEL به عنوان نام فایل برای
ورودی استاندارد
-o، --only-matching فقط بخشی از رشته را نشان می دهد که با PATTERN مطابقت دارد
-q، -- آرام، -- بی صدا تمام خروجی های عادی را سرکوب می کند
--binary-files=TYPE TYPE فایل باینری را در نظر بگیرید:
باینری، متنی یا بدون تطابق.
-a، --text همان --binary-files=text
-من مانند --binary-files=without-match
-d، --directories=ACTION نحوه مدیریت دایرکتوری ها
ACTION قابل خواندن (خواندن) است،
recurse (به صورت بازگشتی)، یا پرش (پرش).
-D، --devices=ACTION نحوه کار با دستگاه ها، FIFO ها و سوکت ها
ACTION را می توان "خواندن" یا "پرش"
-R، -r، --recursive همان --directories=recurse
--include=F_PATTERN فقط فایل های مطابق با F_PATTERN را پردازش می کند
--exclude=F_PATTERN پرش از فایل ها و دایرکتوری ها،
مطابق با F_TEMPLATE
--exclude-from=فایل پرش از فایل های مطابق الگو
فایل ها از FILE
--exclude-dir=PATTERN دایرکتوری مطابق با PATTERN،
نادیده گرفته خواهد شد
-L، --فایل‌ها-بدون مطابقت، فقط نام فایل‌ها را بدون مطابقت چاپ می‌کند
-l، --files-with-matches فقط نام FILE را با مطابقت چاپ می کند
-c، --count فقط تعداد موارد منطبق را چاپ کنید
خطوط در هر فایل
-T، --initial-tab-tab-align (در صورت نیاز)
-Z، --null چاپ بایت 0 بعد از نام FILE

مدیریت زمینه:
-B، --before-context=NUM NUM از خطوط زمینه قبلی را چاپ می کند
-A، --after-context=NUM چاپ NUM خط متن بعدی
-C، --context[=NUM] چاپ NUM خط زمینه،
--color[=WHEN]،
--colour[=WHEN] از نشانگرها برای تشخیص موارد منطبق استفاده کنید
خطوط؛ WHEN می تواند همیشه (همیشه)،
هرگز (هرگز) یا خودکار (به طور خودکار)
--color، --colour از نشانگرها برای تشخیص خطوط منطبق استفاده می کنند
-U، --دودویی کاراکترهای CR را در انتهای خط حذف نکنید (MSDOS)
-u، --unix-byte-offsets offset خروجی به گونه ای که انگار هیچ CR (MSDOS) وجود ندارد

Grep -E قرار است به جای egrep اجرا شود. grep -F به جای fgrep در نظر گرفته شده است.
بهتر است از دویدن به صورت egrep یا fgrep اجتناب کنید.
وقتی FILE داده نمی شود، یا زمانی که FILE - است، ورودی استاندارد خوانده می شود.
اگر کمتر از دو فایل مشخص شده باشد، -h در نظر گرفته می شود. وقتی پیدا شد
مطابقت دارد، کد خروج از برنامه 0 و در غیر این صورت 1 خواهد بود.
خطاها، یا اگر گزینه -q مشخص نشده باشد، کد خروج 2 است.

دستور Find در Linux/FreeBSD. دستور دستور را پیدا کنید

دستور دستور را پیدا کنید:

# پیدا کردن [مسیر] [گزینه‌ها] [گزینه‌های جستجو] [عملکردهای فایل]

مسیر- در کجا به دنبال فایل ها بگردید، می توانید از لیست مسیرهایی که با فاصله جدا شده اند استفاده کنید.

گزینه ها- با کاراکتر "-" شروع می شود و به دنبال آن نام گزینه می آید:
جستجو در زیر شاخه ها قبل از جستجوی خود دایرکتوری
هنگام جستجو، پیوندهای نمادین را دنبال کنید
حداکثر عمق Nهنگام جستجو، بیش از N سطح دایرکتوری تودرتو را بررسی نکنید
-ذهن ندایرکتوری های تودرتو سطح N یا کمتر را اسکن نکنید
-کوهدایرکتوری های سیستم های فایل دیگر را جستجو نکنید

گزینه های جستجو

-atimeNآخرین بار N روز پیش به این فایل دسترسی پیدا شد
-mtime Nآخرین بار این فایل N روز پیش اصلاح شد
-نامقالب نام فایل (قالب نام) بدون مسیر. توصیه می شود همیشه الگو را در گیومه قرار دهید
-اندازه [±]Nاندازه فایل N بلوک است، اگر +N مشخص شده باشد، اندازه فایل بزرگتر از N است، -N کمتر است. کاراکتر بعد از N اندازه بلوک را نشان می دهد. b - 512 بایت، c - بایت، w - 2 بایت، k - کیلوبایت، M - مگابایت، G - گیگابایت.
-type N فایلی از نوع N. رایج ترین مقادیر مورد استفاده برای N عبارتند از: d برای دایرکتوری، f برای فایل.
-کاربرنام کاربری فایل متعلق به کاربری به نام Username است.

نمونه هایی از استفاده از دستور find با استفاده از پارامترها:

# پیدا کردن . -type f -name "~*" -print

در فهرست فعلی فایل های معمولی (نه دایرکتوری ها) را پیدا کنید که نام آنها با کاراکتر "~" شروع می شود.

# پیدا کردن . -جدیدتر file.bak -تایپ f -print

فایل هایی را در دایرکتوری فعلی پیدا کنید که دیرتر از فایل file.bak اصلاح شده اند.

اپراتورها
معیارها را می توان با استفاده از عملگرها ترکیب کرد. عملگرهای زیر به ترتیب تقدم نزولی هستند.

فرم کوتاه توضیحات فرم بلند
!معیار -نه منفی (در صورت نادرست بودن معیار درست برمی گردد)
criterion1 -a criterion2 -و عملگر AND (در صورتی که criterion1 و criterion2 درست باشند)
criterion1-o criterion2 -یا عملگر OR (در صورتی که criterion1 یا criterion2 درست باشد، درست است)

که در مورد کلیهنگام استفاده از عملگرها، معیارها به ترتیب اولویت بررسی می شوند. می توانید ترتیب را با استفاده از پرانتز تغییر دهید. پرانتزها باید با اسلش از هم جدا شوند.

نمونه های فرمان را با استفاده از عملگرها پیدا کنید

#پیدا کردن . \(-name "%*" -یا -name "temp*" \) -type f -print

فایل هایی را در فهرست فعلی پیدا کنید که با کاراکتر "%" یا c "temp" شروع می شوند و فایل هستند ( -نوع f)، نه دایرکتوری ها.

# پیدا کردن . -maxdepth 1 \(\(-size +600M -and -size -1G \) -یا -name "*.mpeg" \) -و -type f

در فهرست فعلی (بدون پردازش زیر شاخه‌ها - -maxdeph 1) فایل های معمولی ( -فایل f) بزرگتر از 600 مگابایت و کمتر از 1 گیگابایت (-size) یا فایل هایی که نام آنها با ".mpeg" (-name) ختم می شود.

اقدامات روی فایل ها
هنگامی که دستور find اجرا می شود، می توانید اقدامات مختلفی را روی فایل های یافت شده انجام دهید. بیایید موارد اصلی را در نظر بگیریم.

دستور Exec \; - یک دستور را اجرا کنید توجه داشته باشید که دستور با علامت بک اسلش و نقطه ویرگول دنبال می شود.
دستور -execdir \; - مانند exec، اما دستور از زیر شاخه حاوی فایل جاری فراخوانی می شود.
دستور -ok \; - مانند exec، اما قبل از پردازش فایل بعدی، از شما خواسته می شود که دستور را اجرا کنید.
دستور -okdir \; -همانطور که برای execdir خوب است.
-print - نام فایل را روی صفحه نمایش دهید.
-ls - دستور ls -dils را روی فایل فعلی اجرا کنید.

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

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

# پیدا کردن . -size +1000c -نوع f -ls

فایل های معمولی بزرگتر از 1000 بایت را در دایرکتوری فعلی پیدا کنید و دستور ls -dils (ls action) را روی آنها اجرا کنید.

# پیدا کردن . -name "~*" -type f -ok rm () \;

فایل های معمولی را در دایرکتوری فعلی پیدا کنید که با کاراکتر tilde "~" شروع می شود و برای هر فایل درخواست حذف آن (برای اجرای دستور rm) صادر کنید.

مثال ها:

فایل ها را بر اساس اندازه آنها پیدا کنید

# find /var/log -name "*.log" -and \(-size +1k -and -size -1000k \) -and -type f -print

فایل‌هایی با پسوند *.log، از 1 کیلوبایت تا 1000 کیلوبایت یافت می‌شوند و نمایش داده می‌شوند.

فایل ها را بر اساس مالک و گروه آنها جستجو کنید

این دستور تمام فایل هایی را که مالک ندارند را پیدا می کند

گزینه ها -کاربریا -uidبه شما امکان می دهد فایل ها را بر اساس شناسه کاربری (UID) و نام کاربری و پارامتر جستجو کنید -گروهبا نام گروه

# پیدا کردن . -name "*.log" -user root -group root

همه فایل‌ها را در فهرست فعلی با لاگ پسوند کاربر root و root گروه پیدا می‌کند

# find -user root -o -user www

تمام فایل های کاربر root یا www را پیدا می کند

استفاده از عبارات منظم

سودمند پیدا کردنپشتیبانی می کند عبارات با قاعده. بیایید بلافاصله یک مثال بزنیم. فرض کنید می‌خواهم همه فایل‌هایی را که پسوند آنها .php یا .js هستند را پیدا کنم. من میتونم اینجوری انجام بدم:

# find -regextype posix-egrep -regex ".*(php|js)$"

کمی پیچیده به نظر می رسد، اینطور نیست؟ به عنوان رد، اشاره می کنیم که نحوی که در اینجا استفاده شده است egrep (-regexttype posix-egrep)، و سپس عبارت منظم مورد استفاده برای جستجو را مشخص می کند. عبارت با یک نقل قول شروع و پایان می یابد تا پوسته خود سعی در تجزیه عبارت منظم نداشته باشد. سپس عبارت.* می آید که از علامتی استفاده می کند که با هر کاراکتر یا مجموعه ای از کاراکترها مطابقت دارد. قسمت (php|js) به شما می گوید که به دنبال php یا js بگردید. خط لوله (|) در این عبارت مطابقت دارد بیان بولی"یا". در نهایت علامت دلار ($) که عبارت را به پایان می رساند نشان می دهد که ما در انتهای نام فایل به دنبال این پسوندها هستیم. بنابراین اگر فایلی به نام js.txt دارید، با معیارهای جستجو مطابقت نخواهد داشت.

کار با زمان
ابزار Find هر آنچه را که برای جستجو بر اساس زمان استفاده از فایل نیاز دارید را دارد. می توانید بر اساس زمان دسترسی جستجو کنید ( -زمان) ، یا تا زمانی که فایل آخرین اصلاح شد (-mtime)، یا زمانی که آخرین اصلاح شد ( -ctime).

برای مثال، بیایید همه فایل‌هایی را که در دو روز گذشته تغییر نکرده‌اند، پیدا کنیم:

# find -mtime +2

اگر می خواهید فایل هایی را در محدوده خاصی جستجو کنید، می توانید گزینه ها را ترکیب کنید. بنابراین find -mtime +2 -mtime -5 به معنای "دو یا چند روز پیش، اما نه بیشتر از پنج روز پیش" است.

کار با دقیقه
گاهی اوقات لازم است به دنبال فایل های اصلاح شده در روز گذشته بگردید و گزینه های جستجوی قبلی برای این کار چندان دقیق نیستند. ابزار Find خوب است زیرا پارامترهایی نیز دارد -امین, -cmو -Mmin، که مشابه گزینه های قبلی هستند، اما به جای روز از دقیقه استفاده می کنند. بنابراین اگر می خواهید ببینید کدام فایل ها در روز گذشته اصلاح شده یا به آنها دسترسی پیدا کرده اند، می توانید از این گزینه ها استفاده کنید.

محدودیت های جستجو
گاهی اوقات ابزار Find نتایج بیشتری از آنچه شما نیاز دارید ارائه می دهد. می توانید نتایج جستجوی بازگشتی توسط ابزار Find را با تعیین پارامتر محدود کنید بیشترین عمق. به عنوان مثال، اگر می خواهید همه را پیدا کنید فایل های جاوا اسکریپتدر دایرکتوری وردپرس می توانید از دستور زیر استفاده کنید:

# wordpress -name "*js" را پیدا کنید

اما اگر بخواهید فقط آن دسته از فایل‌های جاوا اسکریپت را که در دایرکتوری موجود هستند، ببینید سطح بالا? می توانید جستجوی خود را با پارامتر محدود کنید -بیشترین عمق:

# پیدا کردن wordpress -maxdepth 1 -name "*js"

جستجو فقط در دایرکتوری وردپرس انجام می شود، نه در زیر شاخه ها. اگر مقدار را تغییر دهید -بیشترین عمقبا 2، زیر شاخه های دایرکتوری وردپرس را جستجو می کند، اما زیر شاخه های عمیق تر را جستجو نمی کند.

ترکیب ابزار Find با دستورات دیگر
اکنون که فایل های مورد نظر خود را پیدا کرده اید، می خواهید با آنها چه کار کنید؟ می توانید از پارامترها در ابزار Find استفاده کنید xargsیا -اجرایی، که به شما امکان می دهد پس از یافتن فایل ها، اقدامی را که باید روی آنها انجام دهید را مشخص کنید.

فرض کنید می خواهید مالک یک فایل را برای تعداد زیادی فایل به طور همزمان از root به www-data تغییر دهید. یافتن همه این فایل ها تنها اولین مرحله است، همچنین باید صاحب فایل را تغییر دهید. آن را به صورت دستی مطابق با لیستی که توسط ابزار برگردانده شده است انجام دهید پیدا کردن، بسیار خسته کننده بنابراین، برای تغییر مالکیت فایل‌ها، ممکن است بخواهید از آن استفاده کنید -اجرایی:

# find -user root -exec chown www-data () \;

بسیار مهم است که بتوانید به موقع و خیلی سریع پیدا کنید اطلاعات لازمدر سیستم البته همه مدرن فایل منیجرهاعملکرد جستجوی عالی را ارائه می دهد، اما با جستجوی ترمینال لینوکس مقایسه نمی شود. این بسیار کارآمدتر و انعطاف پذیرتر از جستجوی معمولی است، شما می توانید فایل ها را نه تنها بر اساس نام، بلکه بر اساس تاریخ اضافه شده، محتوا جستجو کنید و همچنین از عبارات منظم برای جستجو استفاده کنید. علاوه بر این، می توانید بلافاصله اقدامات لازم را با فایل های یافت شده انجام دهید.

در این مقاله، در مورد جستجو با دستور بسیار قدرتمند find Linux، جزئیات نحو، گزینه ها و چند مثال صحبت خواهیم کرد.

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

ابزار Find به طور پیش فرض در همه نصب شده است توزیع های لینوکسبنابراین نیازی به نصب هیچ بسته اضافی ندارید. این یک یافته بسیار مهم برای کسانی است که می خواهند استفاده کنند خط فرمانموثرترین.

دستور find دستور زیر را دارد:

معیارهای [پوشه] [گزینه ها] را پیدا کنید الگو [عمل]

پوشه- دایرکتوری که در آن جستجو خواهیم کرد

گزینه ها - گزینه های اضافیبه عنوان مثال، عمق جستجو و غیره.

معیار- با چه معیاری جستجو خواهیم کرد: نام، تاریخ ایجاد، حقوق، مالک و غیره.

نمونه- به طور مستقیم مقداری که فایل ها را با آن انتخاب می کنیم.

پارامترهای اصلی دستور find

من همه گزینه ها را در اینجا لیست نمی کنم، ما فقط مفیدترین آنها را در نظر می گیریم.

  • هرگز پیوندهای نمادین را باز نکنید
  • - اطلاعات مربوط به فایل ها را از طریق پیوندهای نمادین دریافت می کند. برای پردازش بیشتر مهم است که نه پیوند، بلکه خود فایل پردازش شود.
  • -بیشترین عمق- حداکثر عمق جستجو در زیر شاخه ها، برای جستجو فقط در فهرست فعلی، روی 1 تنظیم کنید.
  • -عمق- ابتدا در فهرست فعلی و سپس در زیر شاخه ها جستجو کنید
  • -کوهفقط در این فایل سیستم به دنبال فایل ها بگردید.
  • -نسخه- نمایش نسخه ابزار پیدا کردن
  • -چاپ- نمایش نام کامل فایل ها
  • -نوع f- فقط فایل ها را جستجو کنید
  • -نوع d- یافتن پوشه در لینوکس

شاخص

معیارهای زیادی برای دستور find در لینوکس وجود دارد و ما باز هم فقط به موارد اصلی می پردازیم.

  • -نام- جستجوی فایل ها بر اساس نام
  • -پرم- جستجوی فایل ها در لینوکس با حالت دسترسی
  • -کاربر- جستجوی فایل ها بر اساس مالک
  • -گروه- جستجوی گروهی
  • -mtime- جستجو بر اساس زمان تغییر فایل
  • -زمان- جستجوی فایل ها بر اساس آخرین تاریخ خواندن
  • -بدون گروه- جستجو برای فایل هایی که به هیچ گروهی تعلق ندارند
  • -نوسر- جستجو برای فایل های بدون مالک
  • -جدیدتر- فایل های جدیدتر از مورد مشخص شده را پیدا کنید
  • -اندازه- جستجوی فایل ها در لینوکس بر اساس اندازه آنها

نمونه هایی از استفاده

حالا بیایید به نمونه هایی از Find نگاه کنیم تا بتوانید نحوه استفاده از این ابزار را بهتر درک کنید.

1. همه فایل ها را جستجو کنید

نمایش همه فایل ها در فهرست فعلی:

2. فایل های موجود در یک پوشه خاص را جستجو کنید

نمایش تمام فایل ها در دایرکتوری مشخص شده:

جستجوی فایل ها بر اساس نام در پوشه فعلی:

پیدا کردن. -name "*.jpg"

نادیده گرفتن حروف کوچک هنگام جستجو بر اساس نام:

پیدا کردن. -inname "تست*"

3. محدودیت عمق جستجو

فقط در این پوشه فایل ها را با نام در لینوکس جستجو کنید:

پیدا کردن. -maxdepth 1 -name "*.php"

4. وارونگی الگو

فایل هایی را پیدا کنید که با یک الگو مطابقت ندارند:

پیدا کردن. -not -name "test*"

5. معیارهای چندگانه

جستجوی چند معیاره با دستور find در لینوکس، با یک عملگر حذف:

پیدا کردن. -name "test" -نه -name "*.php"

همه فایل‌هایی را که با تست شروع می‌شوند، اما بدون آن، پیدا می‌کند پسوندهای php. اکنون عملگر OR را در نظر بگیرید:

find -name "*.html" -o -name "*.php"

6. دایرکتوری های متعدد

جستجو در دو فهرست به طور همزمان:

پیدا کردن ./test ./test2 -type f -name "*.c"

7. فایل های مخفی را جستجو کنید

یافتن فایل های مخفی:

پیدا کردن ~ -type f -name ".*"

8. جستجو بر اساس مجوز

فایل هایی با یک ماسک مجوز خاص، به عنوان مثال 0664 را پیدا کنید:

پیدا کردن. نوع f-perm 0664

فایل هایی را با مجموعه پرچم suid/guid پیدا کنید:

find / -perm 2644

find / -maxdepth 2 -perm /u=s

یافتن فایل های فقط خواندنی:

/etc -maxdepth 1 -perm /u=r را پیدا کنید

فقط فایل های اجرایی را پیدا کنید:

/bin -maxdepth 2 -perm /a=x را پیدا کنید

9. جستجوی فایل ها بر اساس گروه ها و کاربران

یافتن تمام فایل های متعلق به یک کاربر:

پیدا کردن. -user sergiy

یافتن فایل هایی در لینوکس متعلق به یک گروه:

توسعه دهنده /var/www -group را پیدا کنید

10. جستجو بر اساس تاریخ اصلاح

یافتن فایل ها بر اساس تاریخ در لینوکس با استفاده از پارامتر mtime انجام می شود. یافتن همه فایل‌های اصلاح‌شده 50 روز پیش:

find / -mtime 50

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

find / -atime 50

همه فایل‌های اصلاح شده بین 50 تا 100 روز پیش را پیدا کنید:

find / -mtime +50 –mtime -100

یافتن فایل های اصلاح شده در عرض یک ساعت:

11. فایل ها را بر اساس اندازه جستجو کنید

یافتن تمامی فایل های با حجم 50 مگابایت:

find / -size 50M

از پنجاه تا صد مگابایت:

find / -size +50M -size -100M

یافتن کوچکترین فایل ها:

پیدا کردن. -type f -exec ls -s () \; | مرتب سازی -n -r | سر-5

بزرگترین:

پیدا کردن. -type f -exec ls -s () \; | مرتب سازی -n | سر-5

12. فایل ها و پوشه های خالی را جستجو کنید

/tmp -type f -empty را پیدا کنید

$ find ~/ -type d -empty

13. اقدامات با فایل های پیدا شده

گزینه -exec برای اجرای دستورات دلخواه بر روی فایل های یافت شده استفاده می شود. به عنوان مثال، ls را برای دریافت اطلاعات دقیق در مورد هر فایل اجرا کنید:

پیدا کردن. -exec ls -ld() \;

همه چیز را حذف کنید فایل های متنیبه tmp

find /tmp -type f -name "*.txt" -exec rm -f () \;

تمام فایل های بزرگتر از 100 مگابایت را حذف کنید:

find /home/bob/dir -type f -name *.log -size +10M -exec rm -f () \;

نتیجه گیری

بنابراین این مقاله کوتاه به پایان رسید که در آن دستور find در نظر گرفته شد. همانطور که می بینید، این یکی از مهمترین دستورات ترمینال لینوکس است و دریافت لیستی از فایل های مورد نیاز را بسیار آسان می کند. دانستن آن برای همگان مطلوب است مدیران سیستم. اگر باید دقیقاً بر اساس محتویات فایل ها جستجو کنید، بهتر است از .

شاید شما چنین مشکلی را بدانید: شما نمی توانید فایل را پیدا کنید، اما در جایی روی رایانه است. سپس دستور Find مفید است.

می پرسی: چگونه از آن استفاده کنیم؟ یک صفحه مرد بزرگ برای این برنامه وجود دارد، ما به برخی موارد رایج نگاه خواهیم کرد.

می توانید با ساده ترین شروع کنید: اگر نام فایل را می دانید، به راحتی می توانید آن را پیدا کنید! تنها کاری که باید انجام دهید این است که find را تایپ کرده و نام فایل خاصی را مشخص کنید!

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

اینجا یکی است دستور ساده:

پیدا کردن نام عشق
اگر فایلی به نام "love" وجود داشته باشد، دستور find محل فایل یا چندین فایل مانند این را پیدا می کند:

[ایمیل محافظت شده]:~$ find -name love ./projects/love [ایمیل محافظت شده]:~$
به عنوان مثال، ما تمام فایل ها را با فرمت mp3 جستجو می کنیم و انجام می دهیم لیست کاملدر پرونده:

فایل /home/artix -iname ".mp3" > ./list.txt

جستجوی فایل ها بر اساس بخشی از نام

در مرحله بعد، ما فایل هایی را با فرمت txtx، نه فقط فایل ها، بلکه فایل های متنی که حاوی کلمه "LEON" هستند، پیدا می کنیم:

فایل /home/artix -iname ".txt" -exec grep -H "LEON" "()" \; > ./list.txt
عالی، ما قبلا داریم معلوم می شود که فایل های لینوکس را با کلمه جستجو می کند"لئون". به همین ترتیب، می توانید اضافی را حذف کنید، و در پس زمینه، تا بتوانید به کار خود ادامه دهید:

File /home/artix -iname ".bak" -exec rm "()" \; &
اینجوری زندگیمون رو راحت تر میکنیم اینها ساده ترین چیزها هستند و چیزهای مفید زیادی در آنها وجود دارد.

فایل ها را بر اساس تاریخ لینوکس پیدا کنید

Find ./ -mmin -10 #تاریخ اصلاح کمتر از 10 دقیقه است پیدا کنید./ -mtime +1 #تاریخ اصلاح بیش از یک روز پیدا کنید./ -type f -atime +10 # زمان دسترسی بیش از 10 روز است پیدا کنید. / -type f -amin - 10 #تاریخ اصلاح 10 دقیقه طول می کشد

یافتن متن در فایل های لینوکس

اغلب اتفاق می افتد که می خواهید متن را در آن جستجو کنید فایل های لینوکس. من 2 مثال از جستجوی فایل ها می زنم: (linux، freebsd) شما به قطعه ای از متن در فایل ها نیاز دارید:

# find /var/named/ -type f -exec grep "MX" () \; serversnetwork.info. پست 14400 IN MX 10
و یکی دیگر:

# grep -rl "MX" /var/named/ /var/named/serversnetwork.info.db

فایل ها را بر اساس اندازه پیدا کنید
گاهی اوقات می توان از دستورات دیگری برای جستجوی فایل های لینوکس استفاده کرد. به عنوان مثال، متوجه شدید که چگونه در رایانه خود، در برخی از بخش ها، شروع به افزایش حجم کرد. برای اینکه بفهمید مربوط به کدام فایل است یا کدام پوشه پر شده است، می توانید از دستور زیر استفاده کنید:

یافتن اندازه 95k.
به این ترتیب ما فایل های 95k را پیدا خواهیم کرد. اما این گزینه به ندرت استفاده می شود. بیشتر از دستوراتی استفاده کنید که می تواند برای یافتن فایل بزرگتر یا کوچکتر از اندازه مشخص شده استفاده شود. به عنوان مثال، گزینه:

اندازه -150k را پیدا کنید
باید فایل های بزرگتر از 150k را نشان دهد. یک گزینه

اندازه -94k را پیدا کنید
چیزی کمتر از 94K

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

$ پیدا کنید. -سایز 3500k -چاپ
این گزینه در لینوکس فایل ها را جستجو می کند و روی صفحه نمایش می دهدآنهایی با حجم 3500 کیلوبایت که در این پوشه هستند. اگر باید فایل هایی را پیدا کنید که اندازه آنها کمتر از 250 کیلوبایت است، دستور به شکل زیر خواهد بود:

$ پیدا کنید. -سایز -200k -چاپ
اگر نیاز به یافتن فایل هایی با حجم بیش از 555 مگابایت باشد، از گزینه استفاده می کنیم:

$ find / -size +555M -print
شاید، در این مورد من نوشتن مقاله خود را به پایان برسانم.

حالا احتمالا می توانید خودتان فایل ها را جستجو کنید، متن را در فایل های لینوکس جستجو کنید، فایل ها را بر اساس تاریخ جستجو کنید!

تا اینجا از همه شما متشکرم!

بدون شک هنگام کار با لینوکس گاهی اوقات لازم می شود جستجوی فایلبا ویژگی های خاص این ویژگی ها می تواند اندازه یا نوع فایل، مجوزها و موارد دیگر باشد.


در دسترس بودن در دستورات لینوکس پیدا کردنکمک زیادی به مقابله می کند جستجوی فایلبا توجه به معیارهای مختلف


امروز تحلیل خواهیم کرد جستجوی فایل ها در لینوکسو گزینه های دستور اصلی را بدهید پیدا کردنکه می توانید در کار خود اعمال کنید.

فرمت فرمان پیدا کردن:

پیدا کردنمسیر-گزینه ها

جایی که مسیردایرکتوری برای جستجو است. می توانید مقادیر زیر را برای مسیر تعیین کنید:

. - جستجو در فهرست فعلی؛

/ - جستجو از دایرکتوری ریشه.

~ - در فهرست اصلی جستجو کنید.

در مورد گزینه ها، لیست بسیار بزرگتری در اینجا وجود دارد که خواندن آن به دقت بسیار ضروری است (این در آینده کمک زیادی خواهد کرد!). بنابراین، گزینه های اصلی دستور find:

-نام- با استفاده از الگوی داده شده فایل ها را با نام جستجو کنید.

-کاربر- جستجو برای فایل های متعلق به کاربر مشخص شده؛

-گروه- جستجو برای فایل های متعلق به گروه مشخص شده؛

-پرم- فایل ها را با حالت دسترسی مشخص شده جستجو کنید.

-نوع- جستجو برای فایل های یک نوع خاص. انواع نیز کافی است:

  • ب - فایل بلوک ویژه؛
  • د - دایرکتوری؛
  • c یک فایل کاراکتر خاص است.
  • f - فایل معمولی.
  • ل - پیوند نمادین؛
  • p - لوله با نام;
  • s - سوکت.
-اندازه- جستجو برای فایل هایی با اندازه n واحد.

-mtime -n +n- فایل هایی را جستجو کنید که محتوای آنها کمتر از (-) یا بیش از (+) روز قبل تغییر کرده است.

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

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

نمونه هایی با گزینه -name :

$ /mnt/usb -name "*.mp3" -print را پیدا کنید

تمام فایل‌هایی را جستجو می‌کند (که با علامت * مشخص می‌شود) که پسوند mp3. روی دستگاه USB نصب شده در پوشه /mnt/usb دارند.

$ find ~ -name "test*" -print

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

اگر نیاز به یافتن فایل هایی دارید که با حروف خاصی شروع می شوند (به عنوان مثال، از a تا j)، استفاده از عبارات منظم در اینجا راحت خواهد بود که کار با آنها بسیار راحت است:

$ find / -name "*" -print

دستور بالا تمام فایل های موجود در سیستم را که با حروف a تا j شروع می شوند پیدا می کند.

یافتن فایل هایی با حالت های دسترسی خاص

اگر نیاز به یافتن فایل هایی دارید که حالت های دسترسی خاصی دارند، می توانید از این گزینه استفاده کنید -پرمکه به راحتی به شما کمک می کند.

برای مثال، بیایید فایل‌هایی را با حالت دسترسی 775 جستجو کنیم (مالک و گروه دارند حقوق کاملو سایر کاربران دارای محدودیت نوشتن هستند) که در فهرست فعلی قرار دارد:

$ پیدا کردن. -perm 775 -چاپ

جستجو با پیدا کردنبا گزینه -perm می توانید از راه دیگری استفاده کنید - می توانید یک خط فاصله در جلوی مقدار mode قرار دهید و سپس جستجوی فایل هایی انجام می شود که تمام بیت های مجوز مشخص شده برای آنها تنظیم شده است. علاوه بر این، بیت های باقی مانده در این مورد نادیده گرفته می شوند.

به عنوان مثال، بیایید فایل هایی را که کاربران گروه برای آنها دارند، پیدا کنیم دسترسی کامل:

$ پیدا کردن. -perm -070 -چاپ

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

فایل های یک کاربر یا گروه خاص را جستجو کنید

جستجوی فایل های یک کاربر خاص در اجرای آن بسیار ساده است. برای این کار کافیست دستور زیر را اجرا کنید:

$ find / -user admin -print

دستور بالا تولید خواهد کرد جستجوی فایلدر سیستم متعلق به کاربر مدیر.

برای پیدا کردن فایل های متعلق به یک گروه خاص (مثلا مدیران)، دستور زیر را اجرا کنید:

$ find / -group managers -print

برای جستجوی فایل های کاربران یا گروه هایی که وجود ندارند، می توانید از گزینه ها استفاده کنید -نوسرو -بدون گروه:

$ find / -nouser -print

$ find / -nogroup -print

فایل های یک نوع خاص را جستجو کنید

یکی از ویژگی های راحت فرمان پیدا کردن، توانایی جستجو برای فایل های یک نوع خاص است. گزینه هایی را برای استفاده از گزینه در نظر بگیرید -نوع:

جستجوی پیوندهای نمادین در دایرکتوری /etc:

$ find /etc -type l -print

نمایش فهرستی از دایرکتوری های موجود در فهرست /mnt/raid

$ /mnt/raid -type d -print را پیدا کنید

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

گزینه -اندازهبه شما امکان می دهد فایل هایی با اندازه مشخص را جستجو کنید و در هنگام اجرا به این شکل به نظر می رسد:

$ پیدا کردن. -سایز 2000k -چاپ

دستور بالا فایل های 2 مگابایتی را که در دایرکتوری فعلی قرار دارند را پیدا کرده و روی صفحه نمایش می دهد. برای مثال، اگر باید فایل هایی با حجم کمتر از 500 کیلوبایت پیدا کنید، دستور به شکل زیر خواهد بود:

$ پیدا کردن. -سایز -500k -چاپ

اگر می خواهید فایل های بزرگتر از 600 مگابایت را پیدا کنید، از دستور زیر استفاده کنید:

$ پیدا / اندازه +600M -چاپ

جستجوی فایل ها با استفاده از گزینه -mtime

گزینه -mtimeبه شما امکان می دهد فایل هایی را که در طول زمان تغییر کرده اند پیدا کنید.

به عنوان مثال، ما با وظیفه جست و جوی فایل های واقع در پوشه /mnt/raid/upload مواجه بودیم که طی 5 روز گذشته تغییر کرده اند. این دستور به ما کمک می کند:

$ /mnt/raid/upload -mtime -5 -print را پیدا کنید

اگر برای مثال برای یافتن فایل هایی که برای یک هفته تغییر نکرده اند به عکس آن نیاز داشته باشیم، از دستور زیر استفاده می کنیم:

$ /mnt/raid/upload -7 -print را پیدا کنید

تیم پیدا کردنفوق العاده است ابزار مفیدبرای جستجوی فایلو همچنین قابل استفاده برای جستجوی فایلدر درایوهای NFS (شبکه سیستم های فایل، اما در این مورد باید در نظر گرفت که جستجوی چیزی در NFS نسبت به دیسک های محلی زمان بسیار بیشتری می برد.

در این مقاله تنها به گزینه های اصلی دستور find پرداخته ایم که به شما در کارتان کمک می کند. از آنچه راحت است استفاده کنید و نگران چیزهای بی اهمیت نباشید!