@perrfect

Как сделать цикл for для find bash?

Есть каталог в который сбросили записи звонков asterisk за несколько месяцев. Нужно разложить это все по папкам:

out-11111-2008-20180219-*.wav
out-111111-2008-20180219-*.wav
out-111111-2008-20180219-*.wav
out-11111-2008-20180219-*.wav
out-111111-2008-20180219-*.way


Чтобы в каждой папке были звонки за определенную дату:
Например:
/mnt/rec/2018/07/04/
/mnt/rec/2018/07/05/
и т.д.

Если запускать команду вручную, тогда все перемещается:
find ./ -name '*20180704*' -exec mv -t /mnt/rec/2018/07/04/ {} +

Но это очень долго. Делаю цикл для for, но он не работает:
for i in {1..9}; do find . -name "'*2018010$i*'" -exec mv -t /mnt/rec/2018/01/0$i/ {} +; done

Как правильно переместить всё это?
  • Вопрос задан
  • 235 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Drill
"'*2018010$i*'" - убрать одинарные кавычки
при обращении к переменным надо использовать двойные кавычки " "
Ответ написан
Комментировать
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
Можно попробовать свой цикл, как-то так:
for FILE in "ls -1 *.wav; do
 DATE=$(echo ${FILE}|cut -d- -f 4)
 mv ${FILE} "/mnt/rec/${DATE:0:4}/${DATE:3:2}/${DATE:5:2}/"
done
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы