پوشهای در کامپیوتر داریم که هر چند وقت یک بار تصاویر و فیلمهای گوشی را
به آن انتقال دادهایم. مدت زیادی گذشته و این پوشه شدیداً به هم ریخته
است. فایلها دستهبندی مشخصی ندارند و پوشهبندی موجود کاملاً بیمعنی است،
فایلهای دیگری نیز در بین این فایلها وجود دارد که تصویر یا فیلم نیستند.
از شما میخواهیم یک اسکریپت Bash با نام `organize.sh` بنویسید که به این
وضعیت سر و سامان دهد.
# جزئیات
نحوه اجرای اسکریپت به این صورت است:
```bash
bash organize.sh path/to/src/dir path/to/dst/dir
```
اسکریپت باید تصاویر و فیلمها را طبق قواعد زیر
در پوشه مقصد کپی کند.
1. فایلها باید بر اساس سال میلادی و همچنین بر اساس نوع (فیلم/عکس) دستهبندی شوند.
- در پوشه مقصد به ازای هر سال باید یک پوشه به نام همان سال ایجاد شود.
- داخل پوشه هر سال، تصاویر آن سال باید در پوشهای به نام `photos` و فیلمهای
آن سال باید در پوشهای به نام `videos` قرار بگیرند.
2. در مورد تصاویری که عرض (width) بزرگتر از ۱۰۲۴ پیکسل دارند، باید به جای نسخه
اصلی این تصاویر، نسخه کوچکشده آنها در مقصد کپی شود.
این تصاویر باید با حفظ نسبت طول به عرض طوری تغییر اندازه دهند که
عرض تصویر مقصد ۱۰۲۴ پیکسل باشد.
3. تنها پوشههایی که لازم است باید ایجاد شوند. بنابراین اگر
برای یک سال هیچ تصویر یا فیلمی وجود ندارد، نباید پوشه آن سال ایجاد شود
و یا اگر در یک سال هیچ فیلمی نداریم، نباید پوشه videos در پوشه آن سال
ایجاد شود.
4. معیار تشخیص سال برای هر فایل، زمان آخرین تغییر محتوای فایل است.
(last data modification time)
5. تشخیص عکس یا فیلم بودن فایلها باید بر اساس پسوند
فایل (به صورت case insensitive) طبق لیستهای زیر صورت بگیرد.
- پسوند تصاویر: `jpg, jpeg, png`
- پسوند فیلمها: `mp4, avi, 3gp, mpeg, mkv, wmv, mov`
6. فایلهایی که (طبق قاعده قبلی) تصویر یا فیلم نباشند باید نادیده گرفته شوند و
کپی نشوند.
# مثال
وضعیت پوشه اول:
(در این مثال فرض کنید زمان modification فایلها همان زمانی است که در نام فایل آمده است.)
```
src
├── IMG_2235.jpg [modified time: 2018/01/28]
├── travel_photos
│ ├── 2018-11-09_11-27-14.3gp
│ ├── IMG_20171017_052418.jpg
│ ├── 20180311_214539.JPG
│ ├── IMG_2237.jpg [modified time: 2018/02/21]
│ └── note.txt
└── vid1
├── images
│ └── IMG_2014-01-12.JPG
└── VID_20170425_184731.mp4
```
وضعیت پوشه مقصد پس از اجرای اسکریپت:
```
dst
├── 2014
│ └── photos
│ └── IMG_2014-01-12.JPG
├── 2017
│ ├── photos
│ │ └── IMG_20171017_052418.jpg
│ └── videos
│ └── VID_20170425_184731.mp4
└── 2018
├── photos
│ ├── 20180311_214539.JPG
│ ├── IMG_2235.jpg
│ └── IMG_2237.jpg
└── videos
└── 2018-11-09_11-27-14.3gp
```
# نکات
- پوشه مقصد ممکن است قبل از اجرای اسکریپت وجود نداشته باشد. در این صورت
اسکریپت شما باید پوشه مقصد را بسازد.
- نام فایلهایی که کپی میشوند نباید تغییر کند.
- به جز تصاویری که باید تغییر اندازه بدهند، محتوای سایر فایلها نباید
هنگام کپی شدن هیچ تغییری کند.
- فایلهای پوشه اول نباید تغییری کند.
- فرض کنید برنامه ImageMagick بر روی سیستم نصب است.
- یک فایل Zip شامل اسکریپت `organize.sh` را آپلود کنید.