Вам пощастило, тому що номери в іменах файлів містяться лише в порядку touch -t
потреб.
Ця команда в терміналі буде працювати. Просто переконайтеся, що ваш робочий каталог встановлено у теці, яку ви бажаєте виконати:
for f in *; do
t=$(echo $f | sed -E 's/([A-z]*-)|([ ,;])|(\..*)//g' | sed -E 's/(.*)(..)/\1.\2/')
touch -t $t "$f"
done
Щоб розбити його:
for f in *
встановлює змінну f
до імені кожного файлу в каталозі, в свою чергу.
do
ставить все до тих пір done
в for
петлі.
t=$(…)
встановлює змінну t
до виводу команд у дужках.
Перший sed
команда відповідає будь-яким літерам перед a -
символ, -
;
і space
і розширення файлу, а також видаляє їх.
Другий sed
Команда вставляє період між значеннями mm і ss, як потрібно дотику.
touch -t $t $f
змінює час модифікації та створення файлів на значення t
у файлі f
.
Протестовано на деяких фіктивних файлах з будь-якою версією sed
судна з Mavericks.