Мы покажем вам, как переименовать несколько файлов в Linux. Каждая операционная система в современном мире поставляется с несколькими способами взаимодействия с файловой системой. Будь то создание файлов, их переименование, их копирование или удаление, все они приходят с функциональностью, чтобы эффективно выполнять все эти задачи. Однако одна из операций, с которой большинство операционных систем не справляются, заключается в переименовании одновременно нескольких файлов.Если вам нужен шаблон, если вы просто хотите переименовать много файлов за один раз, переименование файлов может быть весьма утомительным.
К счастью, переименование программного обеспечения может помочь нам решить эту проблему. В этой статье мы ознакомимся с несколькими опциями для пакетного переименования файлов в системах на базе Debian, а также RHEL на основе систем (RedHat Enterprise Linux).
Debian и подобные дистрибутивы, такие как Ubuntu и Linux Mint имеют встроенный инструмент командной строки для пакетного переименования файлов. «rename», предлагается на некоторых операционных системах на основе Debian, является одним из самых мощных инструментов переименования на Linux. Работа по переименованию очень похожа на то, как работает «sed» — это, по существу, это утилита sed для имен файлов. Он может также использовать выражение Perl, поэтому если у вас есть некоторые знания Perl, эта утилита будет работать для вас.
Важно: В некоторых операционных системах, основанных на Debian, в которых будет установлен «rename» может действительно иметь вариант «rename» из пакета util-Linux и пакет. Этот вариант util-linux является гораздо более простой версией «rename», которая не имеет почти столько же функций, как версия, которая поставляется на Debian и Ubuntu.
Вы можете найти и заменить текст в именах файлов, выполнив следующую команду. Убедитесь в том, чтобы изменить значение «Поиск» и «заменить» на текст, который вы хотите изменить. Имейте в виду, что маски являются доступны внутри поля поиска.
Пример:
rename -v 's/search/replace/' *
Вы также можете переименовать типы файлов, определенных файлов, с помощью этого метода — просто заменить «search» и «replace» на новый тип файла.
Пример:
rename -v 's/\.search/\.replace/' *
Если вы хотите переименовать файлы и иметь увеличивающийся ряд в конце имени файла, это может быть сделано, также с применением Perl:
rename -v 's/search/our $i; sprintf("replace%03d.txt", 1+$i++)/e' *
Причина «% 03d» в этой команде, чтобы описать, сколько нулей мы хотим добавить перед нашими номерами. Это используется для хранения файлов, при сортировке файлов в алфавитном порядке. «sprintf» фактически является функцией от Perl, используется для форматирования имени. Она показывает одну из сильных сторон этой версии переименования. Вот пример.
файлы:
file1 file2
Команда:
rename -v 's/file*/our $i; sprintf("name%03d.txt", 1+$i++)/e' *
Вывод:
name001 name002
В случае, если вам нужен конкретный формат для ваших имен файлов, существует множество сценариев Perl доступных в Интернете для переименования файлов во всевозможных форматах.
RedHat Enterprise Linux и связанное с ним дистрибутивы, такие как CentOS также имеют версию «rename» устанавливаемые по умолчанию. Это вариант «Util-Linux», не такой многофункциональный, как тот, который установлен на большинстве систем на базе Debian.
Что касается версии Util-Linux, все это делает простой поиск и замену операций для имен файлов. Вы вводите строку, которую вы ищете в файлах, и указываете, какую строку вы хотите заменить в строке поиска.
rename "search" "replace" *
Это все функциональные возможности, доступные со встроенной утилитой rename в системах на базе RHEL. Если вам нужно сделать более расширенное переименование, подойдет bash scripting с использованием циклов и операций, связанных вместе. Вот пример переименования файлов при добавлении увеличивающегося числа в конец файла. Просто измените ‘search’ и ‘replace’ в скрипте соответствующие имена, которые вы ищете и заменяете. Вот пример:
touch renameScript.sh
find -name 'search' | # find file gawk 'BEGIN{ a=1 }{ printf "mv %s replace%03d\n", $0, a++ }' bash # run
chmod 644 renameScript.sh
sh renameScript.sh
Вот что это будет выглядеть в выводе.
файлы:
file1 file2
Команда:
sh renameScript.sh
Вывод:
name001 name002