Переименование файлов — одна из самых основных задач, которые вам часто приходится выполнять в системе 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
или inside bash for
циклов for
или while
для переименования нескольких файлов.
В следующем примере показано, как использовать цикл for в Bash для переименования всех файлов .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
с разным синтаксисом. В этом руководстве мы будем использовать Perl-версию команды rename
. Если в вашей системе не установлена эта версия, вы можете легко установить ее с помощью диспетчера пакетов вашего дистрибутива.
-
Установить
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 .
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Помилки
rename ‘y/AZ/az/’ *
rename ‘y/az/AZ/’ *
треба
rename ‘y/A-Z/a-z/’ *
rename ‘y/a-z/A-Z/’ *