При работе с файлами их переименование — одно из самых основных действий. В Linux переименование файла или каталога в основном выполняется с помощью mv. Однако когда дело доходит до переименования нескольких файлов или папок, использование mv становится сложным. Для выполнения этой работы требуется создание сложных петель и трубопроводов. Команда переименования специально разработана для таких ситуаций.
Rename — это мощный инструмент пакетного переименования, который использует выражение Perl для переименования нескольких файлов и каталогов с помощью одной команды. В этой статье вы узнаете, как переименовывать файлы с помощью функции переименования.
Команда Rename не предустановлена. К счастью, мы можем установить его с официальных серверов пакетов любого дистрибутива Linux.
Существует две версии инструмента, каждая со своим синтаксисом и функцией. В этой статье мы сосредоточимся на том, что использует Perl.
В случае Debian/Ubuntu переименование доступно как «переименование» пакета. Установите пакет.
$ sudo apt update $ sudo apt install rename
В случае CentOS и Fedora имя пакета другое. Он известен как «prename». Установите пакет.
$ sudo yum install prename
В случае Arch Linux имя пакета — «perl-rename». Установите пакет.
$ sudo pacman -S perl-rename
Давайте посмотрим на различные способы использования команды переименования.
Инструмент следует следующей структуре команд:
$ rename <options> <perl_expression> <files>
Команда rename на самом деле является сценарием Perl. Он работает с использованием выражения Perl. Как вы можете догадаться, для его полного использования требуется опыт работы с регулярными выражениями Perl.
Хотя существует множество способов построения выражения Perl, следующее выражение довольно часто встречается при работе с командой rename.
$ s/<search_pattern>/<replacement>/
Здесь у меня есть куча фиктивных файлов, готовых к переименованию.
Следующая команда переименования переименует все расширения файлов с TXT на TEXT.
$ rename 's/.txt/.text/' *.txt
Здесь целевые файлы для переименования выражаются с помощью символа подстановки (*).
По умолчанию при переименовании выводится мало. Однако более подробные сведения о его действиях могут помочь в различных сценариях, особенно когда дело доходит до отладки. В подробном режиме при переименовании выводится дополнительная информация о текущей задаче, чтобы лучше понять и определить возможные проблемы.
Чтобы выполнить переименование в подробном режиме, добавьте флаг «-v».
$ rename -v 's/.txt/.text/' *.txt
При запуске переименования изменения становятся постоянными. Во многих ситуациях это приведет к ненужным неприятностям. Чтобы предотвратить нежелательные изменения в именах файлов и папок, мы можем протестировать команду с помощью пробного запуска.
Пробный запуск — это в основном тестовый запуск, который ничего не меняет с фактическими файлами и папками. Однако при использовании подробного режима вывод будет выводиться так, как если бы команда действительно была выполнена. Вот почему всегда рекомендуется пробовать пробный прогон в подробном режиме. Перед запуском любой команды переименования для важных файлов и папок рекомендуется выполнить пробный запуск.
Чтобы выполнить пробный прогон, добавьте флаг «-n».
$ rename -v -n 's/.txt/.text/' *.txt
По умолчанию при переименовании не перезаписываются уже существующие файлы. Если вы не боитесь перезаписать существующие, вы можете принудительно перезаписать переименование с помощью флага «-f».
$ rename -v -f 's/.txt/.text/' *.txt
Основная структура команды переименования очень проста. Его основная сила — это включение регулярных выражений Perl. Регулярное выражение — это умный способ описания шаблона и указания действий. Для новичков вот руководство по регулярным выражениям с использованием grep и egrep . Несмотря на использование различных инструментов, основы регулярных выражений по-прежнему применяются.
Вот краткий список некоторых распространенных выражений переименования Perl. Обратите внимание, что это только для справки. Перед тем, как ввести их в эксплуатацию, всегда выполняйте пробный запуск, чтобы убедиться, что они работают должным образом.
Следующее выражение заменит пробелы в именах файлов на подчеркивание.
$ 'y/ /_/'
Нужны имена файлов в верхнем регистре? Следующее выражение Perl в сочетании с командой переименования сделает именно это.
$ 'y/a-z/A-Z/'
Следующее выражение Perl при использовании с переименованием переименует имена файлов из верхнего регистра в нижний.
$ 'y/A-Z/a-z/'
Если имена файлов содержат ненужное содержимое, мы всегда можем удалить их с помощью выражения Perl. Например, чтобы переименовать файлы резервных копий (.bak) в исходные файлы, мы можем просто удалить часть «.bak» из имени файла.
$ 's/\bak$//'
Допустим, у вас есть файлы TEXT и TXT. Несмотря на разные расширения файлов, оба они имеют один и тот же формат. Вместо того, чтобы иметь дело с TEXT и TXT, мы можем переименовать их все в файлы TXT.
$ 's/\.te?xt$/.txt/i'
Точно так же, вместо того, чтобы иметь дело с JPEG и JPG, мы можем переименовать их все в JPG.
$ 's/\.jpe?g$/.jpg/i'
Обратите внимание, что в обоих случаях расширения файлов имеют сходство, за исключением одного символа. Вот почему мы могли использовать этот ярлык. Если расширения файлов совершенно разные, то работать не будет.
Команда rename — простой инструмент для освоения. Это действительно эффективно, когда вы работаете с множеством файлов и переименовываете их в различные форматы.