در این مطلب قصد داریم روش جستجوی فایل در لینوکس را بر اساس معیارهای مختلف مثل حجم، نام، پسوند، سطح دسترسی، تاریخ و… را تشریح کنیم، دستور 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 استفاده کنید.