جستجوی فایل در لینوکس اگر با محیط لینوکس آشنا نباشید میتواند بسیار دشوار باشد. بهترین راه برای پیدا کردن فایلی در لینوکس استفاده از چندین دستور مختلف در ترمینال است. با تسلط بر این دستورات میتوانید کنترل کاملی بر فایلهای خود داشته باشد. این دستورات بسیار قدرتمندتر از توابع ساده جستجو در سایر سیستم عاملها هستند.
در این مقاله از هاوکنیو نحوه جستجوی فایل در لینوکس تشریح میشود اینکه چگونه میتوان با استفاده از چند دستور و تنها با اضافه کردن چند اپراتور ساده فایل و پوشهای را در داخل انواع توزیعهای لینوکس یافت؟
روشهای مختلفی برای این کار وجود دارد که در ادامه به توضیح ۳ دستور locate ،find و grep پرداخته شده است.
روش اول: استفاده از دستور Find
جستجوی فایل در لینوکس با استفاده از اسم فایل
این ابتداییترین جستاری است که میتوانید با استفاده از دستور Find انجام دهید. دستور زیر برای یافتن فایل یا فولدر مورد نظر، دایرکتوری و هر زیرمجموعه از آن را جستجو میکند.
"find -iname "filename
در قسمت “filename” اسم فایل یا فولدر مورد نظر را وارد کنید.
- استفاده از دستور iname- به جای دستور name-، به بزرگی یا کوچکی حروف توجهی ندارد. اما دستور name– نسبت به حروف بزرگ و کوچک حساس است.
جستجوی فایل در کل سیستم عامل لینوکس
اگر میخواهید برای یافتن فایل یا فولدر مورد نظر خود کل سیستم عامل لینوکس را جستجو کنید، میتوانید شناسه / (slash) را به دستور جستجو خود اضافه کنید. این شناسه بعد از دستور find به سیستم عامل دستور میدهد از دایرکتوری root که اولین دایرکتوری در سیستم عامل لینوکس است شروع به جستجو کرده و کل دایرکتوری یا فولدرهای موجود در کل سیستم را برای یافتن فایل یا فولدر مورد نظر جستجو کند.
"find / -iname "filename
- اگر قصد جستجو در فولدر مشخصی را دارید میتوانید مسیر فولدر مورد نظر را به جای / قرار دهید. به عنوان مثال به جای / بنویسید: home/pat/
- اگر قصد دارید جستجو خود را به فولدری که در آن قرار دارید و تمام فولدرهای زیرمجموعه آن محدود کنید، از دستور . (dot) با جای / استفاده کنید.
جستجوی فایلی که نام کامل آن را به یاد ندارید
برای جستجوی هر چیزی که تنها بخشی از نام آن را به یاد دارید میتوانید از کاراکتر جایگزین * استفاده کنید. کاراکتر جایگزین * میتواند برای زمانهایی که نام کامل فایل مورد نظر خود را نمیدانید یا میخواهید تمامی فایلها با یک نوع فرمت خاص را جستجو کرده و بیابید، مفید باشند.
- این دستور تمامی فایلها با پسوند conf. را در فولدر pat و تمامی فولدرهای زیرمجموعه آن جستجو کرده و برای شما پیدا میکند.
- شما همچنین میتوانید از کاراکتر * برای یافتن تمامی فایلهای مرتبط و فایلهایی که اسم کامل آنها را نمیدانید، کمک بگیرید. به عنوان مثال اگر تعداد زیادی فایل مربوط به یک نام مثلا wikiHow دارید میتوانید تمامی آنها را تنها با تایپ بخشی از اسم آن بیابید. مثلا تایپ کنید: “*find / -iname “*wiki
دقت داشته باشید که برای یافتن فرمت خاصی تنها یک کاراکتر جایگزین * استفاده میشود اما در یافتن فایلی که تنها بخشی از اسم آن را قرار است تایپ کنید، ۲ بار از کاراکتر * استفاده میشود.
نتایج جستجوی خود را آسانتر مدیریت کنید
اگر نتایج جستجوی زیادی به دست میآورید، گشتن میان آنها میتواند دشوار و خستهکننده باشد. استفاده از |(pipe) نتایج جستجو را به برنامه فیلتر “less” ارسال میکند. این دستور به شما این امکان را میدهد تا نتایج را بسیار سادهتر پیمایش کرده و فیلتر کنید.
find /home/pat -iname "*.conf" | less
انواع خاصی از نتایج را پیدا کنید
شما میتوانید از شناسههای مختلف برای یافتن انواع خاصی از نتایج استفاده کنید. برای یافتن فایلهای معمولی از شناسه ( f )، دایرکتوری یا فولدر از شناسه ( d )، لینکهای نمادین از شناسه ( l ) [ اِل] استفاده کنید. همچنین برای یافتن character deviceها از شناسه ( c ) و برای یافتن block deviceها از شناسه ( b ) استفاده کنید.
"find / -type f -iname "filename
دستگاههایی مانند هارددیسکها، فلش درایوها و نوارهای مغناطیسی که در حوزه ذخیرهسازی اطلاعات کار میکنند Block Device گفته میشود و به دستگاههایی مانند کیبورد، پورتهای Serial و پرینترها که کارکرد و نحوه انتقال دیتا در آنها بصورت کاراکتر به کاراکتر است Character Device گفته میشود.
ترفندهای مرورگر کروم در اندروید ( 10 ترفند برای حرفهایها)
نتایج جستجوی خود را بر اساس سایز فیلتر کنید
اگر فایلهای بسیاری با نام مشابه دارید اما سایز فایلی را که به دنبال آن هستید دقیق یا حدود آن را به خاطر دارید، میتوانید نتایج جستجوی خود را بر اساس سایز فیلتر کنید.
"find / -size +50M -iname "filename
- این دستور فایلهایی با سایز ۵۰ مگابایت و بیشتر را پیدا میکند. میتوانید از + (plus) برای یافتن سایزهای بزرگتر و از – (minus) برای یافتن سایزهای کمتر از ۵۰ مگابایت استفاده کنید. حذف + و – باعث میشود سیستم عامل دقیقا فایلهای با اندازه ۵۰ مگابایت یا هر اندازه دقیق دیگری که میخواهید را جستجو کند.
- برای جستجوی بایت از شناسه ( c )، کیلوبایت از ( k )، مگابایت از ( M )، گیگابایت از ( G ) یا 512byte blocks از ( b ) استفاده کنید تا نتایج بر اساس خواسته شما فیلتر شوند. به یاد داشته باشید پرچم سایز به حروف بزرگ و کوچک حساس است پس شناسهها را به همین شکل که در اینجا نوشته شده است به کار ببرید.
برای ترکیب فیلترهای جستجو از عملگرهای بولین استفاده کنید
شما میتوانید از ۳ عملگربولین – ، or- و not- برای ترکیب چندین فیلتر مختلف و استفاده از آن به عنوان یک فیلتر، استفاده کنید.
"*find /travelphotos -type f -size +200k -not -iname "*2015
- این دستور تمامی فایلهای معمولی موجود در دایرکتوری “travelphotos” با سایز ۲۰۰ کیلوبایت و بیشتر از آن را که در اسم آنها “2015” وجود ندارد را برای شما مییابد.
چگونه بدون نرم افزار بر روی فلش رمز گذاری کنیم
جستجوی فایلها بر اساس صاحبان فایلها، گروهها و سطح دسترسیها
اگر میخواهید فایل خاصی را که متعلق به یک کاربر است یا پروندههایی با سطح دسترسیهای خاص را پیدا کنید، میتوانید با دستورهای زیر جستجو را محدود کنید.
"find / -user pat -iname "filename "find / -group users -iname "filename "find / -perm 777 -iname "filename
- مثالهای فوق به دنبال صاحبان فایلها، گروهها یا سطح دسترسیهای خاصی برای جستجو میگردد. همچنین میتوانید برای یافتن تمامی فایلهای مطابق با آن نوع خاص، عبارت “filename” را از دستور حذف کنید. به عنوان مثال دستور find / -perm 777 تمامی فایلها با سطح دسترسی ۷۷۷ را بدون محدودیت مییابد.
ترکیب دستورات برای انجام اقدامات لازم هنگام یافتن فایلها
شما میتوانید دستور find را با سایر دستورات ترکیب کنید تا بتوانید آنها را روی فایلهایی که توسط جستار ترمینال یافت شدهاند، اجرا کنید. دستور find و دستور دوم را با پرچم exec- از یکدیگر جدا کنید و سپس دستور را با ;\ {} تمام کنید.
;\ {} find . -type f -perm 777 -exec chmod 755
- این دستور فایلی که اکنون در آن قرار دارید را به همراه تمامی زیرمجموعههای آن برای یافتن فایلهایی که مجوز ۷۷۷ دارند، جستجو میکند. سپس از دستور chmod برای عوض کردن مجوز به ۷۵۵ استفاده میکند.
روش دوم: استفاده از دستور locate
قابلیت locate را نصب کنید
دستور locate به طور کلی بسیار سریعتر از دستور find عمل میکند، چرا که بر اساس یک پایگاه داده یا همان دیتابیس از ساختار فایلهای شما کار میکند. لازم به ذکر است که تمامی توزیعهای لینوکس دارای قابلیت locate نیستند، بنابراین برای نصب آن میتوانید دستورات زیر را وارد کنید:
- دستور sudo apt-get update را وارد کنید سپس دکمه اینتر را بزنید.
- در توزیع لینوکس Debian و Ubuntu میتوانید به طریق زیر آن را نصب کنید: دستور sudo apt-get install mlocate را وارد کرده سپس اینتر را بزنید. اگر قابلیت locate قبلا نصب شده باشد شما پیغام mlocate is already the newest version را مشاهده خواهید کرد.
- در توزیع لینوکس Arch برای نصب این قابلیت از بسته مدیریتی pacman استفاده کنید: pacman -S mlocate
- برای توزیع لینوکس Gentoo از emerge استفاده کنید: بدین منظور تنها کافی است دستور emerge mlocate را وارد کنید.
چگونه از چشم خود در مقابل مانیتور محافظت کنیم ؟ (تنظیمات بهینه و نرم افزار ها)
دیتابیس locate را بروزرسانی کنید
تا زمانی که پایگاه داده یا همان دیتابیس قابلیت locate ساخته و به روز نشده باشد، دستور locate قادر به یافتن چیزی نخواهد بود. بروزرسانی دیتابیس به طور خودکار روزانه انجام میگیرد، اما میتوانید آن را به صورت دستی نیز بروزرسانی کنید. اگر میخواهید بلافاصله شروع به استفاده از دستور locate کنید، باید بروزرسانی را به صورت دستی انجام دهید.
- بدین ترتیب کافی است دستور sudo updatedb را وارد کرده و اینتر را بزنید تا اینکار به سرعت انجام شود.
استفاده از دستور locate
دستور locate سریع است، اما قابلیتها و آپشنهای زیادی به اندازه دستور find ندارد. شما میتوانید یک جستجوی ساده فایل را تقریبا به همان روش دستور find انجام دهید.
"locate -i "*.jpg
- این دستور کل سیستم را به دنبال فایلهایی با فرمت jpg. میگردد. عملگر جایگزین * در دستور locate مانند دستور find عمل میکند.
- همانند دستور find، دستور i- بدون توجه به بزرگی و کوچکی حروف، جستجوی فایل در لینوکس را انجام میدهد. اگر میخواهید جستار به بزرگی و کوچکی حروف حساس باشد و البته نتایج جستجوی خود را تا حدی محدود کنید میتوانید اپراتور i- را حذف کنید. اما اگر مطمئن نیستید توصیه میشود این کار را نکنید.
نتایج جستجوی خود را محدود کنید
اگر جستجوهای شما نتایج بسیار زیادی را به دست میدهند، میتوانید با استفاده از دستور n- این نتایج جستجو را محدود کرده و اگر به دنبال این دستور تعداد نتایج مورد نظری که میخواهید نمایش داده شود را وارد کنید، نتایج جستجوی شما به همان تعداد محدود میشود.
"locate -n 20 -i "*.jpg
- طبق دستور بالا تنها ۲۰ نتیجه اولی که با جستجوی شما همخوانی دارند، نشان داده میشوند.
- همچنین میتوانید از |(pipe) استفاده کرده تا برای پیمایش آسانتر میان نتایج وارد برنامه فیلتر less شوید.
روش سوم: جستجو با استفاده از دستور grep
جستجوی فایلها با متنی در داخل آنها با دستور grep
اگر به دنبال فایلی هستید که حاوی یک عبارت خاص یا یک رشته کاراکتر میباشد، میتوانید از دستور grep استفاده کنید. دستور اصلی grep به شرح زیر قالببندی شده است:
/grep -r -i "search query" /path/to/directory
- دستور r- جستجو را به صورت “بازگشتی“ تنظیم میکند، بنابراین در دایرکتوری فعلی و کلیه فولدرهای فرعی آن فایلهایی که حاوی آن متن باشند را جستجو کرده و برای شما لیست میکند.
- دستور i- حاکی از این است که جستجو بدون توجه به بزرگی و کوچکی حروف انجام بپذیرد. اگر میخواهید جستجو را دقیقتر و با توجه به بزرگی و کوچکی حروف انجام دهید، اپراتور i- را حذف کنید.
متن اضافی را کات کنید
هنگامی که یک جستجو با استفاده از دستور grep همانند تصویر بالا انجام میدهید، شما نام فایل را به همراه متنی با متن جستجوی مطابقت داده شده به صورت هایلایت شده خواهید دید. میتوانید متن جستجوی مطابقت داده شده با آن را مخفی کنید و تنها نام و مسیر فایل را نشان دهید. بدین منظور از دستور زیر استفاده کنید:
grep -r -i "search query" /path/to/directory/ | cut -d: -f1
پیغامهای خطا را پنهان کنید
دستور grep هنگامی که سعی میکند بدون داشتن مجوزها و سطح دسترسیهای صحیح به فایلها دسترسی پیدا کند یا در فایلهای خالی اجرا شود، خطاهایی را نشان میدهد. شما میتوانید این پیغامهای خطا را به dev/null/ ارسال کنید، بدین ترتیب Errorها در نتیجه نهایی جستجو شما نشان داده نمیشوند.
grep -r -i "search query" /path/to/directory/ 2>/dev/null
جستجوی فایل در لینوکس برای تمامی کاربران کار راحت و سادهای نیست. اما همانطور که در سیستم عامل ویندوز روشهای مختلفی برای یافتن وجود دارد در دنیای پر از کد و دستور لینوکس نیز برای جستجو کردن و پیدا کردن یک فایل و فولدر دستورهای مختلفی وجود دارد. در این مقاله با ۳ دستور locate ،find و grep آشنا شدید. امیدوارم این مطلب برای شما مفید بوده باشد.
اگر با دستورات دیگری آشنا هستید آنها را در قسمت کامنتها با ما و سایر کاربران به اشتراک بگذارید.
برای ارسال دیدگاه خود، ابتدا وارد حساب کاربری خود شوید.
ورود