Переименование файлов — одна из самых основных задач, которые вам часто приходится выполнять в системе 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/’ *