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

دسته بندی: آموزش, لینوکس
جستجوی فایل ها در لینوکس با دستور Find

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

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

جهت سرچ بر اساس نام نیاز است از دستور find در لینوکس با سوئیچ -name استفاده کنید، البته اگر می‌خواهید به حروف بزرگ و کوچک حساس نباشد به جای  -name ‌‌ از -iname استفاده کنید.

find  مسیر  -name   نام فایل

به طور مثال اگر می‌خواهید فایلی بنام test.jpg را در دایرکتوری جاری سرچ کنید. دستور به صورت زیر می‌شود.

find  .  -name test.jpg

جهت سرچ کلیه فایل‌ها در دایرکتوری /home و با نام test.txt لازم است دستور زیر را اجرا کنید :

find  /home  -name test.txt

به عنوان مثال در تصویر زیر دستور find لینوکس برای فایل‌هایی با نام passwd در دایرکتوری / سرچ  اعمال و خروجی به صورت زیر مشاهده شده است:

جستجوی فایل در لینوکس

جستجوی پوشه‌ها بر اساس نام

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

Find‌‌ ‌‌   مسیر -type d -name نام پوشه مورد نظر

به عنوان مثال برای جستجو تمام پوشه‌های بنام backup در /home دستور به صورت زیر تغییر می‌کند:

find‌‌ /home –type d –name backup

یا به طور مثال برای پیدا کردن فایل‌های مخفی در /home/aban/public_html/ از دستور زیر استفاده کنید:

find /home/aban/public_html/‌‌ -type f‌‌ -name‌‌ ".*"

به عنوان مثال در تصویر زیر پوشه‌هایی با نام‌‌ public_html در دایرکتوری / سرچ شده و خروجی به صورت زیر مشاهده شده است:

جستجوی فایل در لینوکس

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

ساختار دستور به صورت زیر است:

find‌‌ مسیر‌‌ -type f‌‌ -name‌‌ "*. پسوند”

به طور مثال جهت سرچ فایل‌هایی با پسوند .php در مسیر جاری دستور به صورت زیر تغییر می‌یابد:

"find . -type f -name "*.php

جستجوی فایل در لینوکس با سطح دسترسی خاص

ساختار دستور find لینوکس به صورت زیر است:

find‌‌  مسیر‌‌ -type‌‌ f -perm سطح دسترسی‌‌ -print

به طور مثال برای پیدا کردن کلیه فایل‌ها با سطح دسترسی ۷۷۷ از دستور زیر می‌توانید استفاده کنید.

find /home -type f -perm 0777 –print

جستجوی دایرکتوری‌ها با سطح دسترسی خاص

ساختار دستور به صورت زیر است: 

در حالت کلی  type‌‌ با سوئیچ f برای فایل‌ها با سوئیچ d برای دایرکتوری/پوشه‌ها استفاده می‌شود.

Find ‌‌  مسیر‌‌ -type‌‌ d -perm سطح دسترسی‌‌ -print

به طور مثال‌‌ برای پیدا کردن کلیه پوشه‌ها با سطح دسترسی ۷۷۷ از دستور زیر می‌توانید استفاده کنید.

find /home -type d -perm 777 –print

با استفاده از !‌‌ در دستور FIND می‌توانید عملیات جستجوی معکوس را انجام دهید.

به عنوان مثال جهت جستجوی تمام فایل‌ها موجود در /home که پرمیژن آن 777 نیست از دستور زیر استفاده کنید:

find /home -type f ! -perm 777

جستجوی فایل در لینوکس

جستجوی فایل و دایرکتوری‌های خالی با دستور find در لینوکس

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

find مسیر -type f -empty

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

find‌‌ مسیر -type d -empty

بیشتر بخوانید: آموزش دستورات لینوکس؛ معرفی مهم‌ترین دستورات لینوکس

جستجوی فایل‌های یک یوزر خاص

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

find مسیر‌‌ -user نام یوزر

به طور مثال برای جستجو تمام فایل‌هایی که متعلق به یوزر aban و در مسیر /home/admin است باید دستور زیر را به کار ببرید:

find /home/admin -user root

جستجوی فایل در لینوکس

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

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

Find‌‌  مسیر‌‌ -size حجم

به عنوان مثال جهت جستجوی فایل‌ها با حجم بیشتر از ۵۰ و کمتر از ۱۰۰‌‌ مگابایت دستور به صورت زیر تغییر می‌کند:

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

به عنوان مثال در تصویر زیر فایل‌های لاگ موجود در سرور با حجم بیشتر از ۱۰ مگابایت سرچ شده و در خروجی نمایش داده می‌شود:

جستجوی فایل در لینوکس

جستجوی فایل‌ها بر اساس ساعت و تاریخ

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

find‌‌   مسیر  -mtime‌‌ تعداد روز

به عنوان مثال جهت جستجوی فایل‌هایی که در ۵۰ روز پیش در مسیر / تغییر کرده‌اند از دستور زیر استفاده کنید.

 find / -mtime 50

جستجوی کردن تمام فایل‌هایی که در‌‌ مسیر / در ۵۰ روز پیش به آنها دسترسی پیدا شده است، مشاهده شده‌‌‌اند.

find / -atime 50

جستجوی فایل در لینوکس برای تمام فایل‌هایی که در یک ساعت اخیر تغییر داده شده‌‌‌اند.

find / -cmin -60

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

find / -mmin -60

با کمک گزینه newerXy

این گزینه در صورتی قابل استفاده است که timestamp X فایلی که در جستجوی آن هستیم از timestamp Y آن جدیدتر باشد. به جای X و Y می‌توان هریک از حروف اضافی زیر را به کار برد :

  • a: سوئیچ زمان دسترسی فایل 
  • B: زمان ایجاد فایل 
  • m: زمان تغییر فایل
  • t: درج مستقیم دستور در یک تاریخ

به عنوان مثال در دستور زیر تنها فایل‌هایی که در تاریخ ۲۰۱۶-۱۲-۰۶ در مسیر جاری تغییر داده شده‌‌اند جستجو می‌شوند:

"find . -newermt "2016-12-06

با کمک گزینه maxdepth

با این آپشن می‌توانید حداکثر عمق جستجو را با عنوان یک level مشخص کنید که تا چندین level از  subdirectory ‌های موجود از دایرکتوری جاری و یا دایرکتوری مورد جستجوی بررسی و search را انجام دهد.

جهت درک بهتر تصویر زیر را مشاهده کنید:

find / -maxdepth 3 -name passwd

جستجوی فایل در لینوکس

جستجوی فایل‌ها با سطح دسترسی خاص

برای اعمال دستور find لینوکس برای فایل‌ها بر اساس سطح دسترسی، از -perm استفاده کنید.

 مسیر -type f -perm سطح_دسترسی -print

مثال:

 find /home -type f -perm 0777 -print

جستجوی فایل‌ها و دایرکتوری‌های خالی

برای جستجوی فایل‌های خالی، از -type f -empty  و برای پوشه‌های خالی، از -type d -empty  استفاده کنید.

find مسیر -type f -empty

جستجوی فایل‌های یک کاربر خاص

برای جستجوی فایل در لینوکس جهت فایل‌های متعلق به یک کاربر خاص، از -user‌‌ استفاده کنید.

find مسیر -user نام_کاربر

مثال:

 ‌‌ find /home/admin -user root

کاربرد -exec در دستور‌‌  find

با -exec شما می‌توانید مشخص کنید چه عملیاتی روی خروجی دستور اجرا شود.

به طور مثال سطح دسترسی کلیه فایل‌ها‌‌ موجود در یک مسیر را از ۷۷۷ به‌‌ ۶۴۴ تغییر دهید.

find‌‌  مسیر‌‌ -type f -perm 777 -print -exec chmod 644 {} \;

کلیه فایل‌های .mp3 در مسیر جاری را حذف نمایید.

find . -type f -name "*.mp3" -exec rm -f {} \;

لیست کلیه فایل‌های لاگ با حجم بیشتر از ۱۰۰ مگ را مشاهده کنید.

find /var/log -type f -size +100M -exec ls -lh {} \;

جمع‌بندی

با استفاده از دستور find  در لینوکس، کاربران قادرند به طور مؤثری فایل‌ها و دایرکتوری‌ها را بر اساس معیارهای مختلف مانند نام، پسوند، سطح دسترسی، حجم و تاریخ جستجو کنند. این دستور با امکاناتی مانند -name  برای جستجو بر اساس نام فایل، -type  برای فیلتر کردن نوع فایل و -exec  برای اجرای عملیات روی نتایج، به کاربران این امکان را می‌دهد که به راحتی اطلاعات مورد نظر خود را پیدا کرده و مدیریت کنند. همچنین، قابلیت‌های پیشرفته مانند -maxdepth  و -mtime  برای کنترل عمق جستجو و زمان ویرایش فایل‌ها، انعطاف‌پذیری و دقت بیشتری را در عملیات جستجو فراهم می‌آورد. این دستورات به ویژه برای مدیران سیستم و کاربران حرفه‌ای لینوکس که نیاز به جستجو و مدیریت داده‌های گسترده دارند، ابزارهای بسیار قدرتمندی به شمار می‌آیند.

بیشتر بخوانید: هاست لینوکس چیست؟ چه مزایا و امکاناتی دارد؟

سوالات متداولی که شما می پرسید؟

1. چگونه فایل‌ها را در سیستم فایل لینوکس پیدا کنیم؟

می‌توانید از دستور find برای جستجوی فایل یا دایرکتوری در سیستم فایل خود استفاده کنید. با استفاده از فلاگ exec- (find -exec) می‌توان موارد منطبق را که می‌توانند فایل‌ها، دایرکتوری‌ها، پیوندهای نمادین، دستگاه‌های سیستم و… باشند، پیدا کرده و بلافاصله در همان دستور پردازش کرد.

2. چگونه می‌توانیم فایل‌ها را در لینوکس مشاهده کنیم؟

برای نمایش همه ورودی‌های فایل‌ها، از جمله ورودی‌هایی که با نقطه (.) شروع می‌شوند، از دستور ls -a استفاده کنید. می‌توانید خروجی را به روش‌های زیر قالب‌بندی کنید: با استفاده از فلاگ l-، یک ورودی را در هر خط فهرست کنید. با مشخص کردن فلاگ C- یا x-، ورودی‌های چند ستون را فهرست کنید.

3. آیا می‌توانیم از دستور find برای جستجوی فایل‌ها بر اساس محتوای آنها در لینوکس استفاده کنیم؟

بله؛ دستور find را می‌توان با grep برای جستجوی فایل‌ها بر اساس محتوای آن‌ها ترکیب کرد.

4. چگونه می‌توانیم با استفاده از دستور find در لینوکس فایل‌هایی با نام خاص را جستجو کنیم؟

برای جستجوی فایل‌هایی با نام خاص می‌توانید از گزینه name- با دستور find استفاده کنید.

5/5 - (3 امتیاز)

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

ما را در شبکه‌های اجتماعی دنبال کنید

همچنین شاید دوست داشته باشید!

نظرات کاربران

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.

این فیلد را پر کنید
این فیلد را پر کنید
لطفاً یک نشانی ایمیل معتبر بنویسید.
شما برای ادامه باید با شرایط موافقت کنید

فهرست