یک اسکریپت bash بنویسید که یک پوشه ورودی را پیمایش کند و با استفاده از حلقه‌ها و شرطی‌ها فایل‌ها را طبق پسوندشان به زیرپوشه‌های جدا (مثلاً txt, jpg, png, others) منتقل کند و برای هر عملیات یک خط لاگ بنویسد.

3.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:26

0.0

برای حل این سوال از یک حلقه for برای پیمایش فایل‌ها استفاده کنید و با شرط [ -f "$file" ] فقط فایل‌ها را پردازش کنید؛ پسوند را با پارامتر اکسپنشنی مانند ${file##*.} استخراج کنید و با دستور case یا تعدادی if/elif مسیر زیرپوشه مناسب را تعیین کنید. از mkdir -p برای ایجاد زیرپوشه‌ها در صورت عدم وجود و mv برای نقل‌مکان استفاده کنید و برای جلوگیری از مشکلات با نام‌های دارای فاصله متغیرها را در کوتیشن "" قرار دهید؛ قبل از اجرای نهایی اسکریپت می‌توانید با echo عملیات را شبیه‌سازی (dry run) کنید و با اضافه کردن زمان‌بندی یا حلقه while/ sleep اسکریپت را برای خودکارسازی دوره‌ای آماده کنید.

توسط پژوهشگر در 202 روز قبل ساعت 02:26
دسته بندی ها: Bash Scripting Bash Scripting for beginner
sara در 202 روز قبل ساعت 09:38

برای اطمینان از پردازش فقط فایل‌ها را با شرط -f در حلقه for بررسی کنید و نام‌های با فاصله را با quotes مدیریت کنید. پسوند را با ${file##*.} استخراج کنید و اگر فایل بدون پسوند بود، مقدار پیش‌فرضی مانند noext در نظر بگیرید تا زیرپوشه مربوط ساخته شود. سپس با یک ساختار case یا چند شرط if/elif مسیر زیرپوشه txt، jpg، png و others را تعیین کرده و با mkdir -p زیرپوشه‌ها را ایجاد و از mv برای جابه‌جایی استفاده کنید. برای لاگ‌برداری هر عملیات یک خط شامل زمان رویداد ثبت کنید و برای امکان dry-run یا اجرای دوره‌ای می‌توانید یک متغیر کنترل‌کننده و مدت زمان sleep اضافه کنید.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری