سه دستور ساده برای جستجوی فایل در لینوکس
سیستم فایل لینوکس با ویندوز متفاوت است؛ به همین دلیل معمولا کاربران بیشتر با سیستم فایل لینوکس درگیر هستند و این موضوع اکثر اوقات مشکلات جدی را به همراه دارد. اگر با ترمینال لینوکس کار کرده باشید احتمالا متوجه قدرت آن شدهاید که به راحتی میتوان همهی کارها را توسط آن انجام داد. یکی از مواردی که همه افراد ممکن است یک زمانی با آن مواجه شوند جستجوی فایلها در محیط لینوکس است؛ به همین منظور دستورات مختلفی به همراه سوئیچها وجود دارد که میتوان توسط آنها محل دقیق فایلها را در سیستم لینوکس مشخص کرد. یکی از دستورات مهم و کاربردی لینوکس دستور find است، کاربرد آن پیدا کردن لیستی از فایلها و پوشهها بر اساس شرایط خاصی که توسط کاربر مشخص میشود. مثلا کاربر میتواند جستجو را بر اساس سطح دسترسی، کاربران، گروهها، نوع فایل، تاریخ، اندازه و دیگر معیارهای ممکن انجام دهد.
دستور Which
دستور which آسانترین دستور بین سه دستوری است که در این مقاله تشریح میکنیم. اما این سادگی کمی همراه با سوئیچهای مختلف است که دستور which را منحصر به فرد میکند. در سیستم لینوکس هر دستوری را که در ترمینال وارد میکنید، هنگام اجرا، دستور به یک کتابخانه خاص ارجاع داده میشود.در واقع زمانی که دستوری را تایپ میکنید این فایل باینری دستور است که اجرا میشود. دستور which مسیر یک دستور دیگر را نشان می دهد. مثلا با وارد کردن این دستور به همراه دستور مورد نظر، خروجی، مسیری است که فایل باینری دستور دوم در آن جا قرار دارد. تصویر فوق نمایانگر این مساله است. در این مثال در کنار دستور which دستور sudo که خود کاربردی مجزا دارد وارد شده است، خروجی این دستور مسیر دستور sudo را نشان میدهد که این دستور در مسیر usr/bin/sudo/ قرار دارد. دستور which این قابلیت را دارد که به طور همزمان مسیر چند فایل را نشان دهد، برای این منظور پس از تایپ کردن which و وارد کردن دستور اول و سپس فاصله و دستور دوم میتوانید مسیر هر دو دستور را دریافت کنید.
دستور مشابه which نیز وجود دارد که اطلاعات بیشتری را در اختیار میگذارد. دستور whereis فقط به نمایش دادن مسیر فایل باینری اکتفا نکرده و مسیر فایلهای منبع دستورات را نیز نمایش میدهد. حتما این نکته را هم در نظر داشته باشید که این دستور نیز همانند which قابلیت نمایش نتایج چندین دستور را به طور همزمان دارد. تنها تفاوت اساسی بین which و دستور whereis این است که دستور which جستجو را در تمامی پوشههای موجود در مسیر جاری را انجام میدهد، در حالی که whereis جستجو را در تمامی پوشههای سیستمی انجام میدهد.
دستور Locate
دستور locate از دیتابیسهای pre-built برای جستجو استفاده میکند که این ویژگی باعث میشود تا در امر جستجو تسریع داده شود. در واقع مفهوم این دستور بیشتر شبیه به جستجوی ایندکسی در ویندوز است. این نوع جستجو به مراتب سریعتر از جستجوی کل دیسک است اما تنها مشکلی که وجود دارد این است که ممکن است برخی مواقع ایندکسها بروز نشده و تغییرات فایلها را ذخیره نکرده باشند. اگرچه سیستم لینوکس خود هر چند گاهی لیست ایندکسها را بروز میکند اما این امکان نیز فراهم شده که بتوان به صورت دستی آنها را بروز کرد. برای این منظور میتوان از دستور updatedb استفاده کرد، حتما این نکته را هم در نظر داشته باشید که اجرای این دستور کمی زمانبر خواهد بود.
برای استفاده از دستور locate تنها کاری که نیاز است انجام دهید، وارد کردن عبارت و query برای جستجو است. پس از این مرحله، نتایج، تمامی پوشههای ایندکس شده را در بر میگیرد. اگر میخواهید که خروجی فقط نتایج دلخواه باشد و در واقع قصد دارید که دستور را محدود کنید، در این حالت از پارامتر b- استفاده کنید. اگر هم ترجیح میدهید نتایج به حروف بزرگ و کوچک حساس باشد از پارامتر i- استفاده کنید، و برای محدود کردن تعداد نتایج میتوان از پارامتر # استفاده کرد.
دستور Find
دستور find یکی از شگفتانگیز ترین دستورات لینوکس است. با این دستور میتوانید کارهای بسیار جالبی انجام دهید. این دستور برای پیدا کردن فایلی در یک شاخهی خاص و تمام زیرشاخههای آن استفاده میشود. جستجوها میتوانند بسیار متنوع باشند و امکانات برنامه بسیار مفصل است. اگر دستور find را بدون هیچ آرگومان و گزینهای وارد کنید، لیست تمام فایلهای موجود در شاخه جاری و زیر شاخههای آن را چاپ میکند. میتوانید بلافاصله پس از دستور، مسیری را که میخواهید جستجو در آنجا انجام شود وارد کنید؛ مثال فوق جستجو را در دایرکتوری tmp/ انجام میدهد و تمام فایلهای موجود در آن شاخه و زیرشاخههایش را نمایش میدهد. این دستور را میتوان در حالتهای پیدا کردن فایل ها بر اساس نام فایل ها توسط دستورات پایه find، پیدا کردن فایل بر اساس سطح دسترسی، جستجوی فایلها بر اساس Ownerها و Groupها، جستجوی فایلها و پوشهها بر اساس تاریخ و زمان و جستجو بر اساس حجم فایلها انجام داد. کاربرد دستور Find بسیار وسیع بوده و دارای پارامترهای زیادی است.