در این مطلب قصد داریم روش جستجوی فایل در لینوکس را بر اساس معیارهای مختلف مثل حجم، نام، پسوند، سطح دسترسی، تاریخ و… را تشریح کنیم، دستور find در لینوکس با سوئیچهای مختلفی که دارد امکان سرچ در لینوکس را به سادگی فراهم میکند. با ما در ادامه مقاله همراه باشید تا به طور کامل با نحوه استفاده از این دستور آشنا شوید. دستور Find به شما کمک میکند تا فایلهای مورد نظر خود را در سیستم لینوکس پیدا کنید. این دستور برای جستجو در فایلهای لاگ سیستم نیز بسیار مفید است. فایلهای لاگ حاوی اطلاعات ارزشمندی درباره فعالیتهای سیستم هستند، از جمله تلاشهای ناموفق برای ورود به سیستم که ممکن است توسط فایروال IPTables در لینوکس ثبت شوند.
جستجوی فایل در لینوکس بر اساس نام
جهت سرچ بر اساس نام نیاز است از دستور 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بیشتر بخوانید: آموزش دستور cut در لینوکس ؛ بررسی کاربردهای پیشرفته فرمان cut
جستجوی فایل در لینوکس با سطح دسترسی خاص
ساختار دستور 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 که پرمیژن آن ۷۷۷ نیست از دستور زیر استفاده کنید:
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بیشتر بخوانید: آموزش نحوه استفاده از دستور tar در لینوکس
جستجوی فایل در لینوکس بر اساس حجم
جهت جستجوی فایل در لینوکس بر اساس حجم از دستور با ساختار زیر استفاده کنید:
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 برای کنترل عمق جستجو و زمان ویرایش فایلها، انعطافپذیری و دقت بیشتری را در عملیات جستجو فراهم میآورد. این دستورات به ویژه برای مدیران سیستم و کاربران حرفهای لینوکس که نیاز به جستجو و مدیریت دادههای گسترده دارند، ابزارهای بسیار قدرتمندی به شمار میآیند.
بیشتر بخوانید: هاست لینوکس چیست؟ چه مزایا و امکاناتی دارد؟
سوالات متداولی که شما می پرسید؟
۱. چگونه فایلها را در سیستم فایل لینوکس پیدا کنیم؟
میتوانید از دستور find برای جستجوی فایل یا دایرکتوری در سیستم فایل خود استفاده کنید. با استفاده از فلاگ exec- (find -exec) میتوان موارد منطبق را که میتوانند فایلها، دایرکتوریها، پیوندهای نمادین، دستگاههای سیستم و… باشند، پیدا کرده و بلافاصله در همان دستور پردازش کرد.
۲. چگونه میتوانیم فایلها را در لینوکس مشاهده کنیم؟
برای نمایش همه ورودیهای فایلها، از جمله ورودیهایی که با نقطه (.) شروع میشوند، از دستور ls -a استفاده کنید. میتوانید خروجی را به روشهای زیر قالببندی کنید: با استفاده از فلاگ l-، یک ورودی را در هر خط فهرست کنید. با مشخص کردن فلاگ C- یا x-، ورودیهای چند ستون را فهرست کنید.
۳. آیا میتوانیم از دستور find برای جستجوی فایلها بر اساس محتوای آنها در لینوکس استفاده کنیم؟
بله؛ دستور find را میتوان با grep برای جستجوی فایلها بر اساس محتوای آنها ترکیب کرد.
۴. چگونه میتوانیم با استفاده از دستور find در لینوکس فایلهایی با نام خاص را جستجو کنیم؟
برای جستجوی فایلهایی با نام خاص میتوانید از گزینه name- با دستور find استفاده کنید.


