جستجوی فایل در لینوکس اگر با محیط لینوکس آشنا نباشید می‌تواند بسیار دشوار باشد. بهترین راه برای پیدا کردن فایلی در لینوکس استفاده از چندین دستور مختلف در ترمینال است. با تسلط بر این دستورات می‌توانید کنترل کاملی بر فایل‌های خود داشته باشد. این دستورات بسیار قدرتمندتر از توابع ساده جستجو در سایر سیستم عامل‌ها هستند.

در این مقاله از هاوکن‌یو نحوه‌ جستجوی فایل در لینوکس تشریح می‌شود اینکه چگونه می‌توان با استفاده از چند دستور و تنها با اضافه کردن چند اپراتور ساده فایل و پوشه‌ای را در داخل انواع توزیع‌های لینوکس یافت؟

روش‌های مختلفی برای این کار وجود دارد که در ادامه به توضیح ۳ دستور locate ،find و grep پرداخته شده است.

روش اول: استفاده از دستور Find


جستجوی فایل در لینوکس با استفاده از اسم فایل

جستجوی فایل در لینوکس-هاوکن‌یو

این ابتدایی‌ترین جستاری است که می‌توانید با استفاده از دستور Find  انجام دهید. دستور زیر برای یافتن فایل یا فولدر مورد نظر، دایرکتوری و هر زیرمجموعه از آن را جستجو می‌کند.

"find -iname "filename

در قسمت “filename” اسم فایل یا فولدر مورد نظر را وارد کنید.

  • استفاده از دستور iname- به جای دستور name-، به بزرگی یا کوچکی حروف توجهی ندارد. اما دستور name نسبت به حروف بزرگ و کوچک حساس است.

جستجوی فایل در کل سیستم عامل لینوکس

جستجوی فایل در لینوکس-هاوکن‌یو

اگر می‌خواهید برای یافتن فایل یا فولدر مورد نظر خود کل سیستم  عامل لینوکس را جستجو کنید، می‌توانید شناسه / (slash) را به دستور جستجو خود اضافه کنید. این شناسه بعد از دستور find به سیستم عامل دستور می‌دهد از دایرکتوری root که اولین دایرکتوری در سیستم عامل لینوکس است شروع به جستجو کرده و کل دایرکتوری یا فولدرهای موجود در کل سیستم را برای یافتن فایل یا فولدر مورد نظر جستجو کند.

دایرکتوری root که با شناسه / شناخته می‌شود در واقع حکم درایو C در سیستم عامل ویندوز را دارد. دایرکتوری root در واقع اولین و اصلی‌ترین دایرکتوری یا فولدری است که تمامی فایل‌های سیستمی در آن قرار دارند.
"find / -iname "filename
  • اگر قصد جستجو در فولدر مشخصی را دارید می‌توانید مسیر فولدر مورد نظر را به جای / قرار دهید. به عنوان مثال به جای / بنویسید:  home/pat/
  • اگر قصد دارید جستجو خود را به فولدری که در آن قرار دارید و تمام فولدرهای زیرمجموعه آن محدود کنید، از دستور . (dot) با جای / استفاده کنید.

جستجوی فایلی که نام کامل آن را به یاد ندارید

جستجوی فایل در لینوکس-هاوکن‌یو

برای جستجوی هر چیزی که تنها بخشی از نام آن را به یاد دارید می‌توانید از کاراکتر جایگزین * استفاده کنید. کاراکتر جایگزین * می‌تواند برای زمان‌هایی که نام کامل فایل مورد نظر خود را نمی‌دانید یا می‌خواهید تمامی فایل‌ها با یک نوع فرمت خاص را جستجو کرده و بیابید، مفید باشند.

[su_note note_color=”#ffffff” text_color=”#000000″ radius=”11″]find /home/pat -iname “*.conf
[/su_note]
  • این دستور تمامی فایل‌ها با پسوند 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
در بخش “search query” متن مورد نظری را که با خاطر دارید وارد کنید. در ادامه مسیر دایرکتوری‌ای که می‌خواهید در آن جستجو صورت بگیرد را به شکل دستور بالا وارد کنید.
  • دستور 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 آشنا شدید. امیدوارم این مطلب برای شما مفید بوده باشد.

اگر با دستورات دیگری آشنا هستید آن‌ها را در قسمت کامنت‌ها با ما و سایر کاربران به اشتراک بگذارید.

منبع: