آشنایی با نحوه ی یافتن فایل ها در لینوکس


آشنایی با نحوه ی یافتن فایل ها در لینوکس


دستور locate این امکان را به ما می‌دهد تا از طریق کامند لاین اقدام به جستجوی فایل/دایرکتوری خاصی نماییم. locate اقدام به گشت زنی در دیتابیسی که قبلاً کلیه ی فایل‌ها و دایرکتوری ها در آن به ثبت رسیده‌اند می‌کند و هر چیزی که با کلیدواژگان مد نظر ما همخوانی داشته باشد را در معرض دیدمان قرار می‌دهد که گاهی اوقات لیست نتایج جستجو بسیار طولانی می گردد.

برای آن که لیستی کوتاه‌تر و در عین حال دقیق‌تری از نتایج جستجو داشته باشیم، می‌توانیم از دستور grep استفاده کنیم. برای روشن‌تر شدن این مسأله، مثالی می زنیم:

دستور فوق هر فایل/دایرکتوری که حاوی حروف zip باشد را می‌یابد اما ما نیاز داریم تا فقط آن‌هایی که علاوه بر zip حاوی عبارت bin هم هستند، نمایش داده شوند. در چنین صورتی، از دستور زیر استفاده می‌کنیم:

نکته یی که در کامند فوق باید نظر داشت استفاده از علامت | برای ادغام کردن ۲ دستور مختلف به صورت هم‌زمان است که در ادامه بیشتر با این دستور آشنا می شویم.

آشنایی با کاربرد پایپ ها در لینوکس
فلسفه ی سیستم عامل های مبتنی بر یونیکس این است که امکانی در اختیار کاربران قرار داده شود تا بتوانند با ترکیب دو یا چند کامند ساده، دستورات پیچیده یی خلق کنند. در همین راستا، امکانی در سیستم عامل گنو/لینوکس فراهم شده تا با به کارگیری از علامت | (پایپ به معنی لوله) نیازهای خود را مرتفع سازند:

چنین دستوری اصطلاحاً Pipeline (پاپ لاین یا خط لوله) نامیده می‌شود به طوری که از آن طریق، چندین دستور مختلف در قالب یک دستور اجرا می گردد.

پیش از این گفتیم که دستور locate از دیتابیسی که توسط سیستم ساخته می‌شود برای یافتن کلیدواژگان جستجو شده استفاده می کند. این دیتابیس نامش updatedb است که بسیاری از توزیع‌های لینوکسی آن را به صورت خودکار روزی یک بار اجرا می‌کنند تا اطلاعات دیتابیس به روز رسانی شود. به هر حال، اگر تمایل داشته باشید با وارد کردن کامند updatedb در ترمینال به صورت دستی، می‌توانید این دیتابیس را به روز رسانی کنید (حتماً به خاطر داشته باشید که برای اجرای این دستور نیاز به سطح دسترسی روت خواهید داشت.)

قبل از دستور updatedb از کامند sudo استفاده می کنیم تا بتوانیم سطح دسترسی کاربری را به روت تغییر دهیم: ابتدا از ما خواسته می شود که پسورد روت را وارد کنیم و پس از وارد کردن پسورد، چند ثانیه یی به طول خواهد انجامید تا دیتابیس آپدیت شود.

کاربردهای دستور ls در لینوکس
برای نمایش لیستی از فایل ها و دایرکتوری ها، از دستور ls استفاده می شود؛ دستور ls آپشن های مختلفی دارا است که از جمله ی مهم ترین آن ها می توان به موارد زیر اشاره کرد:

آپشن کاربرد
ls -l حرف l از ابتدای واژه ی Long به معنی «طولانی» گرفته شده است. این آپشن فرمتی طولانی از اطلاعات فایل /دایرکتوری ها را نمایش می دهد که از آن جمله می توان به پرمیشن ها، حجم فایل، تاریخ تغییر فایل، مالکیت فایل و … اشاره کرد.
ls -a حرف a از ابتدای کلمه ی All به معنی «همه» گرفته شده و کاری که این آپشن انجام می دهد این است که تمامی فایل ها من جمله فایل های Hiddden یا «پنهان» را نیز نمایش می دهد.
ls -d حرف d از ابتدای Directory به معنی «پوشه» گرفته شده است و استفاده از این آپشن صرفا دایرکتوری ها را لیست می کند.
ls -R حرف R از ابتدای کلمه ی Recursive به معنی «بازگشتی» گرفته شده و کاری که انجام می دهد این است که تک تک دایرکتوری ها و همچنین کلیه ی محتویات داخل آن را نمایش می دهد.

کاربرد این دستور خیلی ساده است:

همان طور که مشاهده می شود، ابتدا دستور ls را می نویسیم سپس اگر قصد استفاده از آپشن خاصی را داشته باشیم، یک فاصله قرار می دهیم یک علامت – می گذاریم و آپشن مد نظر را وارد می کنیم. برای روشن تر شدن نحوه ی به کارگیری از دستور ls، به ذکر چند مثال اکتفا می کنیم. ابتدا وارد مسیر روت شده سپس دستور ls را اجرا می کنیم:

به عنوان خروجی دستور فوق داریم:

حال قصد داریم تا یک آپشن را هم به همراه دستور ls مورد استفاده قرار دهیم. برای نمایش اطلاعات بیشتری از فایل ها و دایرکتوری های قرار گرفته در روت، از آپشن l- استفاده می کنیم:

به عنوان خروجی دستور فوق داریم:

می بینیم که اطلاعات به مراتب جامع تری در معرض دیدمان قرار می گیرد. علاوه بر این، به خاطر داشته باشیم که به صورت هم زمان از چندین آپشن مختلف هم می توان برای تمامی کامندهای لینوکس استفاده کرد. به عنوان مثال، اگر بخواهیم هم اطلاعات جامعی از فایل/دایرکتوری ها نمایش دهیم و هم فایل های پنهان را نمایش دهیم، می توانیم از کامند زیر استفاده نماییم:

به عنوان راه کاری جایگزین، می توان هر دو آپشن را در هم ادغام نمود:

به عنوان خروجی هر دو کامند فوق داریم:

همواره به خاطر داشته باشیم که دستور ls محتویات پوشه یی که داخل آن قرار داریم را نمایش می دهد اما همیشه این امکان را داریم تا از هر کجای فایل سیستم لینوکس، محتویات سایر دایرکتوری ها را نیز مشاهده کنیم. به طور مثال فرض کنیم که داخل دایرکتوری هوم قرار داریم اما می خواهیم محتوایات دایرکتوری etc که در اکثر توزیع های لینوکسی وجود دارد را ببینیم. برای این منظور، از کامند زیر استفاده خواهیم کرد:

کامند فوق کلیه ی محتویات دایرکتوری etc که در روت سیستم قرار دارد را نمایان خواهد ساخت.

نکته
فایل/دایرکتوری های پنهان یا Hidden به فایل/دایرکتوری هایی گفته می‌شود که نام آن‌ها با یک . شروع می شود. برای مثال، دایرکتوری fonts. یک دایرکتوری پنهان است. زمانی که اکانت کاربری شما در سیستم عامل گنو/لینوکس ساخته می شود، چندین فایل پنهان در دایرکتوری هوم شما ساخته می شوند که مسئول پیکربندی اکانت شما هستند. علاوه بر این، برخی از اپلیکیشن ها نیز فایل های پیکربندی (Configuration) خود را به عنوان فایل های Hidden در این دایرکتوری قرار می دهند.

جستجوی دقیق تر با استفاده از Wildcard ها در لینوکس
برای جستجوی دقیق‌تر، می‌توان از Wildcard های زیر استفاده کرد:

وایلدکارد کاربرد
? برای تک تک کاراکترهایی که همخوانی داشته باشند.
* برای چند کاراکتر
[set] طیفی از کاراکترهایی که می بایست وجود داشته باشند را تعریف می کنیم.
[!set] طیفی از کاراکترهایی که نمی بایست وجود داشته باشند را تعریف می کنیم.

برای روشن‌تر شدن کاربرد وایلدکاردها، به ذکر چند مثال اکتفا می کنیم؛ برای یافتن کلیه ی فایل‌هایی که ابتدای آن های با initr شروع شود، سپس یک حرف دیگر به عنوان حرف آخر آن‌ها بوده و پسوند آن هم img. باشد، از دستور زیر استفاده می کنیم:

برای یافتن کلیه ی فایل‌هایی که پسوند آن‌ها img. است از کامند زیر استفاده می کنیم:

برای یافتن کلیه ی فایل‌هایی که ابتدای آن‌ها با حرف initr شروع شده و حرف بعدی آن یکی از حروف مابین a تا z بوده و پسوند فایل هم img. باشد، از دستور زیر استفاده می کنیم:

برای یافتن کلیه ی فایل‌هایی که ابتدای آن‌ها با حرف initr شروع شده و حرف بعدی آن یکی از حروف مابین e تا k نباشد و پسوند فایل هم img. باشد، از دستور زیر استفاده می کنیم:

یافتن فایل‌ها و دایرکتوری ها از طریق کامند لاین لینوکس
دستور find یکی از دستورات پرکاربرد در لینوکس برای ادمین های سیستم است. این دستور، فایل سیستم لینوکس را می‌گردد و کلیه ی فایل‌ها و یا دایرکتوری هایی که با معیارهای در نظر گرفته شده همخوانی داشته باشد را می‌یابد.

زمانی که هیچ آرگومانی برای دستور find در نظر گرفته نشود، این دستور کلیه ی آیتم هایی را لیست می‌کند که در دایرکتوری قرار گرفته در آن -و کلیه ی دایرکتوری های زیرشاخه ی آن- با فیلترهای مد نظرمان همخوانی داشته باشند. دستور find دارای آپشن های مختلفی است که رایج ترین آن‌ها عبارتند از:

آپشن کاربرد
name- برای فایل‌هایی که دارای الگوی خاصی در نامشان هستند.
iname- بزرگی و کوچکی حروف را نادیده می‌گیرد.
type- فایل‌های یافته شده را بر اساس نوع فایل محدود می سازد؛ مثلاً برای محدود کردن به دایرکتوری ها، از حرف d و برای محدود کردن به فایل‌های معمولی از حرف f استفاده می‌شود.

برای روشن‌تر شدن کاربرد این کامند، چند مثال می زنیم. برای جستجوی کلیه ی فایل‌ها و دایرکتوری های تحت عنوان gcc در دایرکتوری usr/ از کامند زیر استفاده می شود:

برای جستجوی صرفاً دایرکتوری های تحت عنوان gcc در دایرکتوری usr/ از دستور زیر استفاده می شود:

و برای جستجوی فایل‌های معمولی تحت عنوان test1 در دایرکتوری usr/ هم از دستور زیر استفاده می شود:

پیش از این گفتیم که اگر آرگومان خاصی برای دستور find در نظر نگیریم، این دستور مسیری که داخل آن قرار داریم را جستجو می‌کند اما همان‌طور که در کامندهای فوق می بینیم، مسیر usr/ را به عنوان دایرکتوری قابل جستجو در نظر گرفته‌ایم که علاوه بر این دایرکتوری، کلیه ی دایرکتوری های زیرشاخه ی آن نیز جستجو خواهند شد.

کاربردهای پیشرفته ی دستور find
یکی از موارد استفاده ی کاربردی دستور find برای اجرای دستوراتی روی فایل‌هایی است که با معیارهای جستجوی ما همخوانی دارند. آپشن exec- این امکان را به کاربران لینوکس می‌دهد تا دستورات مد نظر خود را روی فایل‌ها اعمال کنند. به طور مثال، برای یافتن کلیه ی فایل‌هایی که پسوند آن‌ها txt. است و روی دسکتاپ داخل پوشه یی تحت عنوان test هستند از کامند زیر استفاده می شود:

علامت های {} محلی برای ذخیره سازی فایل‌های جستجو شده است. در ارتباط با این دستور حتماً به خاطر داشته باشیم که می بایست دستور خود را با ‘;’ به پایان برسانیم (البته در عوض از علامت های ; هم می‌توانیم استفاده کنیم.) به عنوان راه‌کاری جایگزین برای دستور exec، از دستوری تحت عنوان ok- نیز می‌توان استفاده کرد. کاربرد این دو دستور کاملاً به یکدیگر شبیه است با این تفاوت که در صورت استفاده از دستور ok- اجازه ی اجرای دستور باید از طرف کاربر صادر شود؛ مزیت دستور ok- این است که هرگز سهواً اقدام به اجرای دستوارتی مخرب -همچون پاک کردن- نخواهیم پرداخت.

یافتن فایل‌ها بر اساس حجم
گاهی اوقات کاربران لینوکسی نیاز دارند تا بر اساس حجم فایل‌ها، اقدام به جستجو کنند که چنین کاری با استفاده از دستور find به سادگی امکان‌پذیر است:

به عنوان مثالی دیگر، برای یافتن فایل‌های بزرگ‌تر از ۱۰ مگابایت، می بایست از دستور زیر استفاده کرد:

این دستور کلیه ی فایل های قرار گرفته در فایل سیستم روت که بیش از ۱۰ مگابایت حجم داشته باشند را خواهد یافت.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *