جستجو و یافتن فایل از طریق ترمینال لینوکس میتواند برای افراد مبتدی کمی چالش برانگیز باشد. لینوکس ساختار فایل سلسله مراتبی دارد و سازماندهی فایلها و دایرکتوریها میتواند نسبت به آنچه که برخی از کاربران میشناسند، متفاوت باشد. همچنین سیستمهای لینوکسی میتوانند دارای تعداد زیادی فایل و دایرکتوری باشند که این موضوع موجب پیچیده تر شدن فرایند یافتن فایل خواهد شد. در لینوکس چندین ابزار مفید و قدرتمند جهت انجام عملیات مذکور وجود دارد که در این مقاله به بررسی 5 دستور لینوکس برای یافتن سریع فایلها پرداخته میشود.
تصویر(1)
1- دستور find
دستور find ابزاری قدرتمند و پرکاربرد جهت جستجوی فایل میباشد. استفاده از این دستور لینوکس برای یافتن سریع فایلها ساده است. کاری که باید انجام دهید مشخص کردن یک دایرکتوری جهت آغاز جستجو در آن مسیر میباشد. دایرکتوری مربوطه میتواند دایرکتوری فعلی یا هر دایرکتوری دیگری که فکر میکنید فایل مورد نظر در آن مسیر قرار دارد را شامل شود. پس از مشخص کردن نقطه شروع، لازم است تا یک expression (متشکل از آپشن، عملیات و عملگر) تعیین گردد. سپس فایلها مطابق با آن جستجو شده و در صورت نیاز، عملیات موردنظرتان روی آنها انجام میشود. این دستور از چندین آپشن جهت جستجو با مشخصههایی همچون سطح دسترسی، یوزر، گروه، نوع فایل، تاریخ، حجم و… پشتیبانی میکند.
مثال 1:
جهت جستجوی تمام فایلهایی که در دایرکتوری جاری و ساب دایرکتوریهای آن با پسوند txt. قرار دارند، میتوانید از دستور زیر استفاده نمایید:
find . -name "*.txt"
در دستور فوق علامت نقطه (.) به معنی دایرکتوری جاری میباشد که به عنوان مسیر شروع جستجو استفاده شده است. آپشن name- جهت جستجو بر حسب نام میباشد که در دستور فوق، نام فایل باید با الگوی txt.* وارد شود.
مثال 2:
جهت جستجوی فایلهایی که در دایرکتوری جاری و ساب دایرکتوریهای آن قرار دارند و در 30 روز گذشته دسترسی به آنها صورت نگرفته است، از دستور زیر استفاده میشود:
find . -type f -atime +30
در دستور فوق، آپشن type- و مقدار f به این معنی است که تنها فایلهای معمولی باید در جستجو لحاظ شوند. بخش "atime +30-" نیز مشخص میکند که تاریخ دسترسی به فایل باید بیشتر از 30 روز باشد.
2- دستور Locate
Locate یک دستور لینوکس برای یافتن سریع فایلها بر اساس نام است. این دستور مشابه find است اما در عمل نسبت به همتای خود سریعتر و بهینه تر میباشد.
تصویر(2)
زمانی که کاربر عملیات جستجوی فایل را انجام میدهد، Locate به جای بررسی فایل سیستم، یک کوئری به دیتابیس خودش ارسال میکند. این دیتابیس شامل لیستی از نام فایلها و مسیر آنها در فایل سیستم میباشد.
این دیتابیس نیاز به بروزرسانی دارد و عملیات مربوطه با دستور updatedb انجام میشود. توجه داشته باشید که Locate فایل هایی که پس از آخرین آپدیت ایجاد یا اصلاح شده باشند را در نتایج خود نمایش نمیدهد. لذا برای رفع این مشکل نیاز است ابتدا اقدام به آپدیت دیتابیس نموده و سپس عملیات جستجو را انجام دهید تا نتایج دقیق و بروز باشند. همچنین میتوانید یک کرون جاب تعریف نمایید تا در بازههای مشخصی به صورت خودکار اقدام به آپدیت دیتابیس نماید. لازم به ذکر است که دستور locate به صورت پیشفرض روی توزیعات لینوکسی نصب نمی باشد. جهت نصب آن می توانید از دستورات زیر استفاده نمایید.
دستور نصب بر روی توزیعات مبتنی بر RHEL:
yum install mlocate
دستور نصب بر روی توزیعات مبتنی بر Debian:
apt-get install mlocate
مثال:
برای پیدا کردن تمام فایل هایی که دارای پسوند conf. هستند نیاز است دستور زیر را اجرا نمایید:
locate '*.conf'
در مثال فوق '*' یک کاراکتر wildcard است که میتواند برابر با هر کاراکتری باشد. عبارت 'conf.' نیز مشخص میکند که نام فایل باید به این پسوند ختم شود.
3- دستور grep
grep ابزاری برای جستجوی مستقیم فایلها نیست و معمولا برای چاپ خطوطی از یک یا چند فایل که با الگوی خاصی مطابقت دارند استفاده میشود. با این وجود، شما میتوانید از این دستور لینوکس برای یافتن سریع فایلها نیز استفاده نمایید. فرض کنید در جستجوی عبارت یا رشته ای از کاراکترهای خاص هستید که در فایلی نوشته شده است. در این موارد، grep میتواند به شما کمک کند تا تمامی فایلهای مرتبط با آن شاخص ها را لیست نمایید.
برای مثال، اگر دنبال یک فایل به نام README.md هستید که شامل عبارت “An assortment” میباشد و همچنین حدس میزنید که این فایل احتمالا در مسیر bin/~ قرار دارد، میتوانید با دستور زیر آن را بیابید:
grep -Ri ~/bin -e "An assortment"
یا
grep -Ri ~/bin/ -e "An assortment" | cut -d: -f1
توضیح آپشنهای استفاده شده به صورت زیر است:
R- : به معنی جستجوی دایرکتوری مشخص شده به صورت بازگشتی
i- : نادیده گرفتن تفاوت حروف بزرگ و کوچک
e- : جهت مشخص کردن عبارتی که باید به عنوان الگوی جستجو استفاده شود.
d- : برای مشخص کردن delimiter یا حائل
f- : جهت مشخص کردن بخشی که باید در خروجی چاپ شود.
تصویر(3)
4- دستور which
دستور which یک ابزار کوچک و ساده است که برای یافتن فایل باینری یک دستور استفاده میشود. هنگامی که شما دستور which و سپس در ادامه نام دستور موردنظر را وارد نمایید، در خروجی به شما آدرس کامل فایل باینری آن دستور را نمایش میدهد. دستور which در مواقعی که نیاز دارید محل یک دستور خاص را بدانید یا بررسی کنید چه نسخهای از دستور موردنظر در حال استفاده است، بسیار کاربردی میباشد.
به عنوان مثال:
which find
دستور فوق، آدرس کامل فایل باینری مربوط به دستور find را در خروجی نمایش میدهد که معمولا در دایرکتوری /usr/bin واقع شده است. به همین صورت میتوانید آن را برای دستورات دیگر نیز استفاده نمایید. همچنین این دستور در مواقعی که میخواهید نصب بودن دستور خاصی را در سیستم بررسی نمایید، بسیار مفید میباشد.
5- دستور whereis
جهت یافتن فایل باینری، منبع و همچنین فایلهای راهنمای مرتبط با یک دستور استفاده میشود.
به عنوان مثال:
whereis find
یا
whereis locate
این دستور میتواند به شما در مشاهده سریع محل یک دستور و دسترسی به فایلهای مرتبط کمک کند، برای عیب یابی نیز میتواند مفید باشد.
نتیجه گیری
پنج دستور لینوکس برای یافتن سریع فایلها که در این مقاله به بررسی آنها پرداخته شد، بسیار ضروری و پرکاربرد هستند و ویژگیهای متنوعی از جمله جستجو بر اساس نام و حجم فایل را فراهم میکنند. استفاده از این دستورات میتواند به طرز قابل توجهی موجب صرفه جویی در زمان و انرژی شود.