Возможный дубликат:
Как выполнить массовое переименование файлов из командной строки или с помощью стороннего инструмента?
У меня есть группа из 47 файлов .mp3, которые используются для мультимедийного проекта и называются 01.mp3 - 47.mp3. Каждый файл на самом деле должен иметь имя, которое представляет собой это число + 5, так что 02.mp3 на самом деле должно быть 07.mp3. Переименованные файлы могут иметь какой-то префикс + число или могут быть записаны в новую папку, чтобы не мешать существующим файлам.
В моем распоряжении Ubuntu и Windows. Может ли кто-нибудь подсказать, как это можно сделать?
решение1
Это можно сделать в awk с помощью такого скрипта:
#!/usr/bin/awk -f
BEGIN {
regex = "[0-9]+"
print "mkdir new"
}
{
if (match($8,regex)) {
before = substr($8,1,RSTART-1);
pattern = substr($8,RSTART,RLENGTH);
newnumber = pattern + 5
after = substr($8,RSTART+RLENGTH);
printf("mv %s new/%s%.2d%s\n", $8, before, newnumber, after);
}
}
Предположим, у вас есть папка, содержащая следующие файлы:
foo01
foo02
foo03
foo04
foo05
bar10.txt
bar11.txt
bar12.txt
bar13.txt
rename.awk
Если бы вы выполнили команду, ls -l|./rename.awk|sh
то получили бы:
new/foo06
new/foo07
new/foo08
new/foo09
new/foo10
new/bar15.txt
new/bar16.txt
new/bar17.txt
new/bar18.txt
rename.awk
Конечно, вы можете изменить скрипт или команду оболочки, чтобы переименовывать только файлы, соответствующие определенному шаблону, или увеличивать на другую величину.