جستجوی فایل در لینوکس
جستجوی فایل در لینوکس برای همهی کاربران کار راحت و سادهای نیست. اما همانطور که در دنیای ویندوز راههای مختلفی برای یافتن وجود دارد در دنیای پر از کد و دستور لینوکس نیز برای search کردن و پیدا کردن یک پوشه مسیرهای مختلفی وجود دارد که پرکاربردترین آنها استفاده از دستور find میباشد.
جستجوی پوشه و فایل در لینوکس با دستور find
اینجا قصد داریم چگونگی جستجوی فایل در لینوکس و پیدا کردن پوشه را در دستهبندی های مختلف حجم، پسوند، تاریخ، نام و.. با استفاده از دستور find و سوئیچهای مختلفش به شما آموزش دهیم.
جستجو بر اساس نام
برای جستجو بر اساس نام باید از سوئیچ –name در کنار دستور find استفاده کنید. همچنین اگر میخواهید نسبت به حروف کوچک و بزرگ حساسیتی نباشد میتوانید از –iname استفاده کنید.
جستجوی فایل بر اساس نام
برای جستجوی فایل در لینوکس بر اساس نام باید از دستور find به شکل زیر استفاده نمایید:
find مسیر -name نام فایل
برای مثال اگر قصد داشتید فایلی به نام sample.txt را پیدا کنید باید دستور را به شکل زیر وارد نمایید:
find . -name sample.txt
برای جستجوی فایل مورد نظرتان در یک دایرکتوری یا مسیر خاص باید دستور را به شکل زیر وارد کنید(مثال جستجوی sample.jpg در دایرکنوری /home ):
find /home -name sample.jpg
در تصویر زیر فایلهای دارای نام passwd را در دایرکتور اصلی سرچ کردهایم:
در اینجا نیز همان فایل را در مسیر /usr جستجو کردهایم:
جستجوی پوشه در لینوکس طبق نام
برای جستجوی پوشه در لینوکس باید دستور find را به صورت زیر وارد کنید:
find مسیر -type d -name نام پوشه مورد نظر
برای مثال پوشههای backup موجود در دایرکتوری /home را اینگونه جستجو میکنیم:
نکته : برای پیدا کردن فایلهای مخفی در پوشههای مختلف نیز باید به صورت زیر از دستورات استفاده کنید( برای مثال فایلهای مخفی موجود در پوشهی public_html در مسیر /home/aban/public_html را با دستور زیر میبینید.):
find /home/aban/public_html/ -type f -name ".*"
جستجوی فایل بر اساس پسوند
جهت جستجوی فایل در لینوکس دارای پسوند خاص باید دستور find را به صورت زیر استفاده نمایید:
find مسیر -type f -name "*. پسوند”
برای مثال جهت پیدا کردن تمام فایلهای دارای پسوند .php به صورت زیر عمل میکنیم:
برای جستجوی فایلهایی با همان پسوند در مسیر خاصی نیز به صورت نیز عمل میکنیم:
جستجوی فایل در لینوکس بر اساس دسترسی
برای سرچ کردن یک فایل بر اساس دسترسی باید دستور find را به این صورت وارد نمایید:
find مسیر -type f -perm سطح دسترسی -print
برای مثال جهت پیدا کردن فایلهای دارای دسترسی ۷۷۷ در مسیر home به شکل زیر عمل میکنیم:
دستور –type برای یافتن دایرکتوریهای با دسترسی خاص
در کل عبارت –type با سوئیچ f برای فایلها و با سوئیچ d برای دایرکتوریی پوشهها استفاده میشود. اگر میخواهید یک دایرکتوری با دسترسی خاص را پیدا کنید باید به صورت زیر عمل کنید:
find مسیر -type d -perm سطح دسترسی -print
مثلا برای یافتن تمام پوشههای دارای دسترسی ۷۷۷ دستور زیر را میزنیم:
find /home -type d -perm 777 –print
همچنین میتوانید جستجوی معکوس(یافتن هرچیزی به جز x ) را نیز با اضافه کردن “ ! ” در دستور find انجام دهید. برای مثال یافتن هر فایلی از دایرکتوری /home که دسترسی ۷۷۷ ندارد را به صورت زیر پیدا میکنیم:
پیدا کردن فایل و دایرکتوری های خالی
گاهی شما لازم دارید فایلها یا دارکتوریهای خالی را پیدا کنید تا آنها را حذف کنید یا تغییرات دلخواه را روی آنها اعمال کنید. به این منظور نیاز دارید دستور –empty را به صورت زیر وارد کنید:
find مسیر -type f –empty
برای یافتن پوشههای خالی نیز دستور را به شکل زیر وارد میکنیم:
find مسیر -type d –empty
جستجوی فایل یک کاربر خاص در لینوکس
برای اینکه تمام فایلهای مربوط به یک کاربر را پیدا کنید میتوانید از دستور زیر استفاده کنید:
find مسیر -user نام یوزر
مثلا برای جستجوی فایلهای مربوط به کاربر root در مسیر /home/admin به صورت زیر عمل میکنیم:
find /home/admin -user root
جستجوی فایل در لینوکس بر اساس حجم
برای یافتن فایلهای دارای حجم معین و کمتر یا بیشتر از حجم معین باید به صورت زیر دستور find را استفاده کنید:
find مسیر -size حجم
به طور مثال، شما قصد یافتن فایلهای دارای حجم بیشتر از ۵۰ مگابایت و کمتر از ۱۰۰ مگابایت را دارید و دستور را به صورت زیر وارد میکنید:
find / -size +50M -size -100M
جستجوی فایل در لینوکس بر اساس تاریخ
گاهی شما نیاز دارید فایلهایی که به تازگی ویرایش شده یا ایجاد شدهاند یا فایلهایی که مدت زیادی از آخرین ویرایش آنها میگذرد را پیدا کنید. برای این منظور از سوئیچهای دستور time کمک میگیریم و زمان مورد نظرمان را معلوم میکنیم. سوئیچ m زمان تغییر فایل، سوئیچ a زمان دسترسی به فایل، سوئیچ b زمان ایجاد فایل و سوئیچ c تاریخ تغییر فایل را نشان میدهند.
مثلا شما قصد پیدا کردن فایلهایی که دیروز ویرایش کردهاید را دارید:
find / -mtime 1
اگر قصد دارید فایلهایی که به آنها دسترسی پیدا شده را مشاهده کنید باید از دستور –atime کمک بگیرید. برای مثال تمام فایلهایی که در ۴ روز گذشته به آنها دسترسی پیدا شده را مشاهده کنید:
find / -atime 4
برای جستجوی فایلهایی که ۷ روز گذشته تغییر داده شدهاند از –ctime استفاده میکنیم. برای مثال:
find / -ctime 7
نکته:
۱٫٫ در تمامی دستورات بالا اگر زمان مد نظر شما
کمتر از یک روز بود میتوانید به جای time از min استفاده کنید. مثلا
برای دیدن فایلهایی که یک ساعت اخیر ویرایش شده اند از دستور زیر استفاده میکنیم:
find / -mmin -60
۲٫٫ همچنین با استفاده از سوئیچ t میتوانید مستقیما یک تاریخ را درج کنید.
۳٫٫ با دستور newer نیز میتوانید همزمان از دو سوئیچ استفاده کنید. مثلا برای جستجوی تمام فایلهایی که در تازیخ ۲۰۲۰-۰۲-۰۲ تغییر داده شدهاند به صورت زیر دستور را وارد میکنیم:
"find . -newermt "2020-02-02
اجرای عملیات بر یک دسته از فایلها با دستور –exec
با استفاده از دستور –exec در کنار دستور find میتوانید مشخص کنید که روی فایلهایی که پیدا شدهاند چه عملیاتی انجام شود.
مثلا میخواهید گذشته از جستجوی فایل در لینوکس، دسترسی تمام فایلهای یک مسیر را از ۷۷۷ به ۶۴۴ تغییر دهید:
find مسیر -type f -perm 777 -print -exec chmod 644 {} \;
یا تمام فایلهای .mp3 یک مسیر حذف شوند:
دستور maxdepth
دستور maxdepth برای جستجوی فایل در لینوکس به صورت عمقی استفاده میشود. شما مشخص میکنید که تا چه عمقی دنبال یک فایل میگردید. مثلا فایلهای passwd که مستقیما در دایرکتوری مد نظرتان هستند را میخواهید اما بقیهی فایلهای passwd مسیرهای زیرمجموعهی آن یا بعبارتی subdirectory های آن را نمیخواهید. اگر به صورت ساده جستجو کنید تمام فایلهای passwd تمام مسیرهای زیر مجموعهی مسیر مد نظر شما نیز نمایش داده خواهد شد. پس باید عمق جستجو را مشخص کنید. برای مثال تا دو سطح از دایرکتوری:
find / -maxdepth 2 -name passwd
خب! اکنون شما نحوهی جستجوی فایل در لینوکس، پیدا کردن پوشه در لینوکس، سرچ کردن بر اساس نام، تاریخ، حجم، دسترسی و.. را آموختهاید و میتوانید از دستور find و مشتقات آن به راحتی استفاده کنید. امیدواریم که این مطلب برای شما مفید واقع شده باشد.
ارسال نظر