وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

حلقه Bash از طریق فایل ها در یک دایرکتوری؟

0 3

سرفصلهای مطلب

زمان لازم برای مطالعه: 4 دقیقه


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

نه تنها در مورد ما، بلکه حلقه زدن در کل برنامه نویسی یک رویکرد و تمرین بسیار کارآمد و قدرتمند است. به دلیل حلقه زدن، می توانیم همان مفهوم را اعمال کنیم روی چندین فایل و روی گروهی از آیتم ها با استفاده از حداقل کد برای به دست آوردن خروجی مورد نظر ما. برای حلقه زدن دایرکتوری‌ها و فایل‌ها در bash، از یک الگوی سراسری به نام “wild card” استفاده می‌کنیم که یک الگوی استاندارد است که با همه فایل‌ها مطابقت دارد. اما ما فقط دایرکتوری ها را با استفاده از “/” در انتهای دستور خود مطابقت می دهیم. پس از آن، به هر دایرکتوری مقدار دایرکتوری «dir» موجود را اختصاص می دهیم. در نهایت از دستور echo برای اجرای حلقه در دایرکتوری ها استفاده می کنیم. از نظر فنی، برای انجام کار، ابتدا باید یک متغیر را مقداردهی اولیه کنیم، سپس مجموعه داده را به متغیری که می‌خواهیم حلقه بزنیم، اختصاص می‌دهیم. در مورد ما، با استفاده از کاراکتر Wild card “*” در میان دایرکتوری ها می چرخد.

نحو:

در زیر نحوی برای چرخش در دایرکتوری ها وجود دارد.

برای f که در /پوشه/* پوشه/**/* ; انجام دادن

دستورالعمل

انجام شده;

در این، ما از حلقه for به همراه متغیر “f” که ایجاد می شود استفاده می کنیم. هر بار که حلقه for اجرا می شود عملی را که باید انجام شود را مشخص می کند. سپس، پس از تعریف مجموعه داده‌ای که از آن عبور می‌کند، مسیری را تعریف می‌کنیم که فایل‌ها باید از آن واکشی شوند یا به سادگی از ستاره “*” استفاده می‌کنیم که به کامپایلر اجازه می‌دهد از دایرکتوری فعلی واکشی کند. در مورد ما دو مسیر با نام “folder” گذراندیم، “/folder/*” فایل‌ها را در پوشه واکشی می‌کند، در حالی که “folder/**/*” فایل‌ها را از زیر پوشه‌های خود واکشی می‌کند.

پیشنهاد می‌کنیم بخوانید:  Bash for Loop in One Line

مثال شماره 1:

ما روش حلقه زدن دایرکتوری ها یا فایل ها را امتحان خواهیم کرد تا ایده بهتری از کار آن داشته باشیم. برای آن، اجازه دهید ابتدا نسخه bash را که در حال حاضر داریم بررسی کنیم زیرا نسخه باید برای استفاده از حلقه به روز شود. برای بررسی نسخه bash دستور زیر را اجرا می کنیم:

linux@linux-Virtualbox:~$ ضربه شدید -نسخه

این نسخه از bash را که در حال حاضر در سیستم ما در حال اجرا است، مانند شکل زیر نمایش می دهد، در سیستم ما، “5.0،17” است.

حلقه Bash از طریق فایل ها در یک دایرکتوری؟

حال برای انجام حلقه، ابتدا یک دایرکتوری جدید در سیستم خود ایجاد می کنیم که در آن چند فایل اضافه می کنیم. برای ایجاد یک دایرکتوری جدید، دستور زیر را اجرا می کنیم:

linux@linux-Virtualbox:~$ mkdir لینوکس

پس از اجرای دستور بالا، هیچ چیزی را اجرا نمی کند، فقط دستور را تحویل می دهد terminal برای اجرای دستورات بیشتر، همانطور که در زیر می بینیم.

حلقه Bash از طریق فایل ها در یک دایرکتوری؟حلقه Bash از طریق فایل ها در یک دایرکتوری؟

حال برای بررسی اینکه آیا دایرکتوری ما با موفقیت ساخته شده است یا خیر، به سراغ فایل های موجود در سیستم خود می رویم و سپس به داخل دایرکتوری خانه می رویم، می توانید پوشه ای به نام لینوکس ایجاد شده را مشاهده کنید. ممکن است یک سوال در ذهن شما ایجاد شود که چرا ما در حال بررسی پوشه در فهرست اصلی هستیم؟ این فقط به این دلیل است که ما هیچ مسیری برای آن ارائه نکرده ایم، به همین دلیل است که همیشه پوشه ها یا فایل های جدیدی را به طور پیش فرض در فهرست اصلی ایجاد می کند.

حلقه Bash از طریق فایل ها در یک دایرکتوری؟حلقه Bash از طریق فایل ها در یک دایرکتوری؟

اکنون، ما باید فایل‌هایی را در دایرکتوری لینوکس ایجاد کنیم تا ابتدا با استفاده از دستور “cd” مانند شکل زیر به دایرکتوری لینوکس خود منتقل شویم:

linux@linux-Virtualbox:~$ سی دی لینوکس

پس از اجرای دستور ما terminal، شبیه این خواهد شد.

حلقه Bash از طریق فایل ها در یک دایرکتوری؟حلقه Bash از طریق فایل ها در یک دایرکتوری؟

با استفاده از دستور “echo”، با اجرای دستور زیر یک فایل جدید با مقداری متن ساختگی در آن ایجاد می کنیم:

لینوکس@linux-Virtualbox:~/لینوکس دلار اکو «جدید من فایل 1> myfile_a.txt

لینوکس@linux-Virtualbox:~ /لینوکس دلار اکو «جدید من فایل 1> myfile_b.txt

لینوکس@linux-Virtualbox:~ /لینوکس دلار اکو «جدید من فایل 1> myfile_c.txt

لینوکس@linux-Virtualbox:~ /لینوکس دلار اکو «جدید من فایل 1> myfile_d.txt

ما 4 فایل را در دایرکتوری لینوکس خود ایجاد کرده ایم که آنها را “myfile_a”، “myfile_b” نامگذاری کرده ایم.

پیشنهاد می‌کنیم بخوانید:  روش شمارش تعداد خطوط در خروجی ترمینال در Bash

“myfile_c” و “myfile_d” که در قطعه زیر می‌توانیم ببینیم. راه‌های مختلفی برای ایجاد فایل‌های جدید مانند استفاده از ویرایشگر متن نانو، استفاده از دستور cat، استفاده از فرمان لمسی و بسیاری موارد دیگر وجود دارد. استفاده از اکو اجباری نیست، می توانید از هر دستوری که می خواهید استفاده کنید.

حلقه Bash از طریق فایل ها در یک دایرکتوری؟حلقه Bash از طریق فایل ها در یک دایرکتوری؟

همانطور که فایل های خود را ایجاد کرده ایم، زمان آن فرا رسیده است که همه فایل ها را با استفاده از حلقه for فهرست کنیم. برای انجام این کار، دستور دیگری را اجرا می کنیم.

لینوکس@linux-Virtualbox:~ /لینوکس دلار برای f که در *; انجام دادن اکو $f; انجام شده

در دستور بالا، یک متغیر “f” ایجاد کردیم که عملی را که انجام می شود را مشخص می کند روی اجرای حلقه در مورد ما، نام فایل‌هایی را که در دایرکتوری لینوکس ذخیره شده‌اند، همانطور که در قطعه زیر می‌بینیم، نمایش می‌دهیم.

حلقه Bash از طریق فایل ها در یک دایرکتوری؟حلقه Bash از طریق فایل ها در یک دایرکتوری؟

با استفاده از دستور بالا، نام فایل هایی که در دایرکتوری لینوکس ذخیره شده اند را نمایش می دهیم. فرض کنید می‌خواهیم محتوا را همراه با نام فایل نمایش دهیم، همچنین می‌توان این کار را با استفاده از حلقه for به جای نوشتن دستور echo بارها و بارها انجام داد.

لینوکس@linux-Virtualbox:~ /لینوکس دلار برای f که در *; انجام دادن اکو $f; انجام شده

همانطور که در زیر نشان داده شده است، محتوای تمام فایل ها در زیر جدا شده با خط جدید نمایش داده می شود. در دستور بالا، یک متغیر “f” ایجاد کردیم، نیازی به ایجاد همان متغیر نیست. شما می توانید هر متغیری را با توجه به نیاز خود ایجاد کنید، استفاده از “f” اجباری نیست.

حلقه Bash از طریق فایل ها در یک دایرکتوری؟حلقه Bash از طریق فایل ها در یک دایرکتوری؟

نتیجه

امروز به بررسی حلقه زدن از طریق دایرکتوری ها پرداختیم، حلقه for را به شما معرفی کردیم که برای واکشی فایل ها از دایرکتوری ها و همچنین با آثار آن استفاده می شود. ما روش استفاده از “for loop” برای واکشی دایرکتوری ها را با استفاده از یک مثال ساده برای شما توضیح دادیم که در آن ابتدا یک فهرست و فایل های جدید ایجاد کردیم، سپس به سادگی با استفاده از “for loop” به آنها دسترسی پیدا کردیم.

برای نگارش بخشهایی از این متن ممکن است از ترجمه ماشینی یا هوش مصنوعی GPT استفاده شده باشد
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم

زمان انتشار: 1402-12-29 12:54:03

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید