Поиск

Упражнение: переименование группы файлов

Выполнив данное упражнение, вы создадите еще один полезный инструмент, который облегчит вашу дальнейшую работу. Эта небольшая программа позволяет выполнить переименование группы файлов по заданному шаблону, находящихся в указанном каталоге. Предположим, что в каталоге находятся файлы chapter JJl.rtf, Chapter_02.rtf, Chapter 04.rtf и т.д., которые мы хотим переименовать в Hour_01.rtf, Hour 02.rtf, Hour_04.rtfи т.д. Выполнить эту задачу средствами командной оболочки дело не из легких, не говоря уже о графических файловых оболочках наподобие программы Проводник в Windows.

С помощью текстового редактора введите программу, исходный код которой приведен в листинге 10.3, и сохраните ее в файле Renamer. Сделайте файл выполняемым, как это было описано на 1-м занятии, "Начало работы с Perl".

Завершив подготовительные действия, запустите программу с помощью следующей команды:

perl Renamer

В листинге 10.4 приведен пример диалога с программой.

Проведем анализ программы.

  • Строки 13-15. Все элементы каталога $dir помешаются в массив @files.
  • Строки 17—19. Выполняется цикл по всем элементам массива @files. Очередной элемент массива помешается в переменную $_, а затем присваивается переменной $oldname. Затем в строке 19 исходное имя файла заменяется в переменной $_ на новое.
  • Строка 20. Перед переименованием необходимо убедиться, что файла с таким именем нет в каталоге. В противном случае после переименования первоначальный файл будет утерян.
  • Строки 21—25. Выполняется переименование файла. Если по какой-либо причине эта операция не может быть выполнена, выводится соответствующее сообщение. Обратите внимание, что перед именами файлов необходимо указать каталог, например $dir/$oldname. Причина заключается в том, что в массиве @files и переменной $_ находятся только имена файлов без пути.