
Переименование файлов — одна из самых распространённых задач, часто выполняемых в системе Linux. Вы можете переименовать файлы с помощью графического файлового менеджера или через командную строку терминала.
Переименование одного файла — простая задача, но переименование нескольких файлов одновременно может стать проблемой, особенно для пользователей, впервые работающих с Linux.
В этом уроке мы покажем вам, как использовать команды mv и rename для переименования файлов и каталогов.
Переименование файлов с помощью команды mv
Команда mv (сокращение от move) используется для переименования или перемещения файлов из одного места в другое. Синтаксис команды mv следующий:
mv [ OPTIONS ] source destination
source может быть один или несколько файлов или каталогов, а destination может быть один файл или каталог.
- Если в качестве
sourceуказано несколько файлов,destinationдолжен быть каталог. В этом случаеsourceфайлы будут перемещены в целевой каталог. - Если в качестве
sourceуказан один файл, аdestinationявляется существующий каталог, то файл перемещается в указанный каталог. - Чтобы переименовать файл, необходимо указать один файл в качестве
sourceи один файл в качествеdestination.
Например, чтобы переименовать файл file1.txt в file2.txt , необходимо выполнить:
mv file1.txt file2.txt
Переименование нескольких файлов с помощью команды mv
Команда mv может переименовывать только один файл за раз, но ее можно использовать вместе с другими командами, такими как find , или внутри циклов bash for или while для переименования нескольких файлов.
В следующем примере показано, как использовать цикл Bash for для переименования всех файлов .html в текущем каталоге путем изменения расширения .html на .php .
for f in *.html ; do mv -- " $f " " ${ f %.html } .php" done
Давайте проанализируем код построчно:
- Первая строка создает цикл
forи просматривает список всех файлов с расширением.html. - Вторая строка применяется к каждому элементу списка и перемещает файл в новый, заменяя
.htmlна.php. Часть${file%.html}использует расширение параметра оболочки для удаления части.htmlиз имени файла. -
doneуказывает на конец сегмента цикла.
Вот пример использования mv в сочетании с find для достижения того же, что и выше:
find . -depth -name "*.html" -exec sh -c 'f="{}"; mv -- "$f" "${f%.html}.php"' ;
Команда find поочередно передаёт все файлы, заканчивающиеся на .html , в текущем каталоге в mv с помощью параметра -exec . Строка {} — это имя текущего обрабатываемого файла.
Как видно из приведенных выше примеров, переименование нескольких файлов с помощью команды mv — непростая задача, поскольку она требует хороших знаний Bash-скриптов.
Переименование файлов с помощью команды rename
Команда rename используется для переименования нескольких файлов. Эта команда более продвинутая, чем mv поскольку требует базовых знаний регулярных выражений.
Существуют две версии команды rename с разным синтаксисом. В этом руководстве мы будем использовать версию команды rename на Perl. Если эта версия не установлена в вашей системе, вы можете легко установить её с помощью менеджера пакетов вашего дистрибутива.
-
Установить
renameв Ubuntu и Debiansudo apt install rename -
Установка
renameв CentOS и Fedorasudo yum install prename -
Установить
renameв Arch Linuxyay perl-rename ## or yaourt -S perl-rename
Синтаксис команды rename следующий:
rename [ OPTIONS ] perlexpr files
Команда rename переименует files в соответствии с заданным регулярным выражением perlexpr . Подробнее о регулярных выражениях perl можно узнать здесь .
Следующий пример изменит все файлы с расширением .html на .php :
rename 's/.html/.php/' *.html
Вы можете использовать опцию -n , чтобы вывести имена файлов, которые нужно переименовать, не переименовывая их.
rename -n 's/.html/.php/' *.html
Вывод будет выглядеть примерно так:
rename(file-90.html, file-90.php) rename(file-91.html, file-91.php) rename(file-92.html, file-92.php) rename(file-93.html, file-93.php) rename(file-94.html, file-94.php)
По умолчанию команда rename не перезаписывает существующие файлы. Чтобы разрешить перезапись существующих файлов, укажите параметр -f :
rename -f 's/.html/.php/' *.html
Ниже приведены еще несколько распространенных примеров использования команды rename :
-
Заменить пробелы в именах файлов на подчеркивания
rename 'y/ /_/' * -
Преобразовать имена файлов в строчные буквы
rename 'y/AZ/az/' * -
Преобразовать имена файлов в верхний регистр
rename 'y/az/AZ/' *
Заключение
Мы показали вам, как использовать команды mv и rename для переименования файлов.
В Linux существуют и другие команды для переименования файлов, например, mmv . Новички в Linux, которых пугает командная строка, могут использовать инструменты пакетного переименования с графическим интерфейсом, например,Métamorphose .
Если у вас есть вопросы или пожелания, не стесняйтесь оставлять комментарии.
Связанные руководства