1

Возможный дубликат:
Как я могу массово переименовать файлы из командной строки или с помощью стороннего инструмента?

У меня есть группа из 47 .mp3 файлов, которые используются для мультимедийного проекта с именем 01.mp3 - 47.mp3. У каждого файла должно быть имя с номером + 5, поэтому 02.mp3 должно быть 07 .mp3 Переименованные файлы могут иметь своего рода префикс + номер или могут быть записаны в новую папку, чтобы не мешать существующим файлам.

У меня есть Ubnutu и Windows в моем распоряжении .. Может кто-нибудь предложить подход к этому?

1 ответ1

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

Конечно, вы можете изменить скрипт или команду оболочки, чтобы переименовывать только файлы, соответствующие определенному шаблону или приращению, на другую величину.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .