Perl, хорошо подходит для этой задачи, так как я предполагаю, что многие другие языки тоже. Однако, если вы уже знаете Perl, это будет довольно простая работа для вас.
Посмотрите на File :: Find :: Rule как на простое средство поиска и работы с большим количеством файлов в дереве каталогов. Вы можете настроить правила, которые будут включать только файлы, которые соответствуют вашим конкретным требованиям, минуя все остальные. Вы также можете настроить обработчик для тех файлов, которые соответствуют вашим правилам.
Внутри вашего обработчика вы можете выполнить переименование, которое считаете необходимым.
Если все файлы находятся в одном каталоге и не требуется список критериев (или правил), определяющих, какие файлы соответствуют требованиям, вы можете просто использовать opendir и readdir вместе с проверками файлов, такими как -f .
Как только вы опубликуете некоторый код, показывающий, где вы застряли, и конкретные вопросы о коде, мы действительно сможем оказать вам более конкретную помощь. Ваш вопрос, как его спросили, слишком широк, чтобы получить конкретный ответ.
Обновление: Я немного поработал, глядя на File :: Find прошлой ночью. Он прошел около 100 000 файлов на моем компьютере с Windows в буквально тысячах каталогов и занял около двух минут. sub wanted
просто выполнил простой подсчет файлов и каталогов, чтобы я мог в значительной степени протестировать только эффективность File :: Find. При первом обратном вызове хотел, чтобы скрипт вывел «Started». Я сделал это потому, что исторически я обнаружил, что File :: Find долго запускал свой цикл обратного вызова в Windows с большими файловыми системами.
Затем я запустил тот же сценарий для файловой структуры аналогичного размера на моем компьютере с Linux.
Я обнаружил, что в Strawberry Perl 5.12.2 и $ File :: Find :: VERSION версии 1.15 ошибка, о которой я ранее говорил в комментариях, похоже, устранена. Требуемые обратные вызовы начались почти сразу, тогда как когда я играл с ним с 5.8.x, обратные вызовы проходили долго, прежде чем запускаться. Это на окнах конечно. В Linux у меня никогда не было проблем.
Для сравнения, однако, тестовому сценарию File :: Find, работающему с аналогично сложными деревьями каталогов в моей системе Windows, потребовалось примерно в десять раз больше времени, чтобы пройти 100 000 файлов, как в моей системе Linux, при «первом запуске». Последующие запуски различий были еще более значительными, поскольку Linux, вероятно, занимался кэшированием файловой системы.
В любом случае, я предлагаю, чтобы, если вы используете File :: Find или File :: Find :: Rule, вы удостоверились, что используете последний Perl (5.12.2 или 5.14.1) вместе с File :: Find версия, которая поставляется с более свежим Perl.