В одной папке у меня много файлов с именами типа MR000001, MR000002 и т.д. вплоть до MR000070. У меня много папок с такими файлами. Я хочу скопировать все файлы в одну папку и переименовать их, чтобы количество продолжало увеличиваться. Например, при копировании второй партии из 70 я хотел бы переименовать файлы так, чтобы они начинались с 71 и заканчивались 140; при копировании третьей партии я бы хотел, чтобы их имена начинались с 141 и доходили до 210. Как я могу сделать это с помощью сценария bash? Пока что у меня это:
for f in MR0000*;
do
cp "$f" "";
done
Я думаю, что я должен быть в состоянии заполнить пустую цитату чем-то, чтобы выполнить то, что я хочу, но я не знаю, что.
printf -v
и воспользоваться строкой форматаprintf
для создания имени файла, дополненного числовым числом до заданного количества цифр. напримерdeclare -i cnt=0; for i in path/to/files/*; do printf -v newname "MR%5d" "$cnt"; mv "$i" "$newname"; $((cnt++)); done
- person David C. Rankin   schedule 15.10.2016