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