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