Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код: Skills Начать
Рубрики
Linux VPS Выделенные

Как переименовать файл в терминале Linux: полное руководство для начинающих и профессионалов

Переименование файлов — одна из самых фундаментальных задач в любой операционной системе, и в Linux это становится исключительно мощным при выполнении непосредственно из терминала. Независимо от того, нужно ли вам изменить имя одного файла или массово переименовать тысячи файлов, используя сложные шаблоны, овладение переименованием файлов в Linux — это важный навык для разработчиков, системных администраторов и инженеров DevOps.

От организации ресурсов проекта до автоматизации очистки логов и подготовки артефактов развертывания — знание правильных инструментов и методов сэкономит вам значительное время, снизит вероятность ошибок и откроет истинную автоматизацию в масштабе.

Почему переименовывать файлы из терминала Linux?

Перед тем как перейти к командам, стоит понять, почему терминальный подход предпочтителен графическим файловым менеджерам во многих случаях:

  • Организация файлов по дате, типу, проекту или соглашению об именовании
  • Автоматизация очистки ротированных логов, временных данных или архивов резервных копий
  • Стандартизация имен файлов для скриптов, развертываний или интеграций API
  • Предварительная обработка наборов данных в конвейерах разработки, исследований или data science
  • Интеграция в рабочие процессы CI/CD, конвейеры обработки изображений или системы контроля версий

Независимо от того, разработчик ли вы, переименовывающий тысячи файлов изображений, системный администратор, очищающий ротированные логи на сервере VPS Hosting, или инженер DevOps, подготавливающий артефакты сборки к развертыванию — приведенные ниже методы сделают ваш рабочий процесс значительно более эффективным.

Способ 1: Базовое переименование файлов с mv

Команда mv (move) — это стандартная встроенная утилита Linux для переименования файлов. Она не требует дополнительной установки и работает на всех дистрибутивах Linux.

Синтаксис

mv old_filename.txt new_filename.txt

Что может делать mv

ЗадачаПример команды
Переименовать файл на местеmv report.txt final_report.txt
Переместить файл в другую директориюmv report.txt /home/user/docs/
Переименовать и переместить одновременноmv report.txt ../archive/final_report.txt

Практический пример

mv file.txt ../archive/renamed_file.txt

Эта единственная команда переименовывает file.txt в renamed_file.txt и перемещает его в директорию ../archive/ в один шаг.

> Важно: В отличие от некоторых операционных систем, Linux не предупреждает вас, если файл назначения уже существует. Исходный файл будет молча перезаписан. Используйте флаг -i (интерактивный) для запроса подтверждения:

mv -i old_filename.txt new_filename.txt

Способ 2: Массовое переименование с rename (на основе Perl)

Для переименования нескольких файлов одновременно утилита rename на основе Perl является наиболее мощным и гибким доступным инструментом. Она использует совместимые с Perl регулярные выражения (PCRE), предоставляя вам точный контроль над сложными шаблонами переименования.

Установка

# Debian / Ubuntu
sudo apt install rename

# RHEL / Fedora / CentOS
sudo dnf install prename

Базовый синтаксис

rename 's/old_pattern/new_pattern/' *.txt

Это переименует все файлы .txt в текущем каталоге, заменив каждое вхождение old_pattern на new_pattern в имени файла.

Распространённые случаи использования rename

ЦельКоманда
Добавить префикс ко всем файлам .jpgrename 's/^/IMG_/' *.jpg
Удалить расширение .bak из имён файловrename 's/.bak$//' *.bak
Преобразовать .JPG в нижний регистр .jpgrename 's/.JPG$/.jpg/i' *.JPG
Заменить пробелы на подчёркиванияrename 's/ /_/g' *
Добавить числовой суффиксrename 's/file/file_v2/' *.txt

Пробный запуск перед выполнением

Это, пожалуй, наиболее важная лучшая практика при массовом переименовании. Используйте флаг -n для предварительного просмотра изменений без фактического изменения каких-либо файлов:

rename -n 's/ /_/g' *

Вывод покажет ровно то, что будет переименовано, позволяя вам проверить корректность шаблона перед выполнением операции.

Способ 3: Массовое переименование с mmv

Утилита mmv (массовое перемещение) предоставляет подход на основе шаблонов для переименования нескольких файлов с использованием синтаксиса подстановочных знаков вместо регулярных выражений. Это немного менее гибко, чем rename, но проще читается для более простых задач.

Установка

sudo apt install mmv

Пример использования

mmv "*.jpg" "photo_#1.jpg"

Это переименовывает каждый файл .jpg в текущем каталоге, добавляя photo_ в начало каждого имени файла. Заполнитель #1 захватывает совпадение подстановочного знака из исходного шаблона.

Метод 4: Рекурсивное переименование с find + mv + Bash

Для сложной логики переименования, охватывающей вложенные директории, объединение find, mv и bash-скриптов дает вам максимальный контроль и гибкость.

Пример: Замена дефисов на подчеркивания во всех .txt файлах (рекурсивно)

find . -type f -name "*.txt" | while read file; do
    new=$(echo "$file" | sed 's/-/_/g')
    mv "$file" "$new"
done

Как это работает:

  1. find . -type f -name "*.txt" — находит все .txt файлы, начиная с текущей директории, включая поддиректории
  2. while read file — перебирает каждый результат
  3. sed 's/-/_/g' — генерирует новое имя файла, заменяя все дефисы на подчеркивания
  4. mv "$file" "$new" — выполняет фактическое переименование

Этот подход безопасен, высокогибкий и работает беспрепятственно в глубоко вложенных структурах директорий — что делает его идеальным для использования на Dedicated Servers, где вы можете управлять большими, сложными иерархиями файлов.

Метод 5: Переименование файлов с циклами for

Для простых пакетных операций в одном каталоге простой цикл for в bash часто является самым быстрым решением.

Пример: добавление префикса ко всем файлам .log

for f in *.log; do
    mv "$f" "archived_$f"
done

Пример: добавление временной метки ко всем файлам .txt

for f in *.txt; do
    mv "$f" "$(date +%Y%m%d)_$f"
done

Пример: замена подстроки в именах файлов

for f in *report*; do
    mv "$f" "${f/report/summary}"
done

Синтаксис ${variable/pattern/replacement} — это встроенная функция расширения параметров bash, не требующая внешних инструментов.

Сравнение: какой инструмент использовать?

ИнструментЛучше всего подходит дляПоддержка RegexРекурсивныйТребует установки
mvПереименование одного файлаНетНетНет (встроенный)
renameСложное массовое переименованиеДа (PCRE)Нет (использовать с find)Да
mmvПростое массовое переименование с подстановочными символамиНет (подстановочные символы)ОграниченныйДа
find + mvРекурсивный, сложная логикаЧерез sed/awkДаНет (встроенный)
for циклПростое массовое переименование в одной директорииЧерез расширение bashНетНет (встроенный)

Best Practices for Renaming Files in Linux

Следование этим рекомендациям защитит ваши данные и предотвратит дорогостоящие ошибки, особенно при выполнении массовых операций переименования на production серверах.

1. Всегда сначала выполните пробный запуск

Перед выполнением любого пакетного переименования просмотрите изменения:

rename -n 's/ /_/g' *

Флаг -n показывает, что *произойдет* без внесения каких-либо фактических изменений. Это обязательно для крупномасштабных операций.

2. Всегда заключайте ваши переменные в кавычки

Имена файлов могут содержать пробелы, специальные символы или переводы строк. Всегда оборачивайте переменные в двойные кавычки, чтобы предотвратить неожиданное разделение слов:

mv "$old_file" "$new_file"

3. Создавайте резервную копию перед массовыми операциями

Перед переименованием тысяч файлов создайте резервную копию или снимок. Если вы работаете в управляемой хостинг-среде, проверьте, предлагает ли ваш провайдер автоматические снимки. VPS планы AlexHost с cPanel включают простое управление резервными копиями прямо из панели управления.

4. Используйте контроль версий для файлов кода и конфигурации

Если вы переименовываете файлы, отслеживаемые в Git репозитории, используйте git mv вместо простого mv для сохранения истории:

git mv old_script.sh new_script.sh

5. Сначала протестируйте на небольшом подмножестве

При работе с тысячами файлов протестируйте команду переименования на небольшом примере каталога перед запуском на полном наборе данных:

mkdir test_rename && cp *.jpg test_rename/ && cd test_rename
rename -n 's/IMG_/PHOTO_/' *.jpg

6. Осторожно обрабатывайте имена файлов с переводами строк

При использовании find с pipes имена файлов, содержащие переводы строк, могут вызвать проблемы. Используйте -print0 и read -d '' для максимальной безопасности:

find . -type f -name "*.txt" -print0 | while IFS= read -r -d '' file; do
    new=$(echo "$file" | sed 's/-/_/g')
    mv "$file" "$new"
done

Реальные примеры использования

Стандартизация имен файлов логов на сервере

Системные администраторы, управляющие ротацией логов на Linux сервере, часто должны переименовывать архивированные логи в соответствии с единообразным соглашением об именовании:

for f in /var/log/nginx/*.log.*; do
    mv "$f" "${f/access/nginx_access}"
done

Подготовка графических ресурсов для веб-приложения

Разработчики, развертывающие веб-приложение на Shared Web Hosting, часто должны нормализовать имена файлов изображений перед загрузкой:

# Convert all image filenames to lowercase and replace spaces with hyphens
rename 's/ /-/g' *.jpg *.png *.gif
rename 'y/A-Z/a-z/' *.jpg *.png *.gif

Массовое переименование файлов при миграции домена

При миграции веб-сайта на новый домен и реструктуризации контента может потребоваться обновить сотни файлов конфигурации или шаблонов. В сочетании с надлежащей регистрацией доменов и управлением DNS чистая структура файлов делает миграции намного более гладкими:

find . -type f -name "*.conf" | while read file; do
    new=$(echo "$file" | sed 's/olddomain/newdomain/g')
    mv "$file" "$new"
done

Часто задаваемые вопросы

Могу ли я отменить операцию переименования в Linux?

Linux не имеет встроенной функции отмены для команд терминала. Вот почему пробные запуски и резервные копии критически важны. Если вы используете Git, git mv операции можно отменить с помощью git checkout.

В чем разница между mv и rename?

mv — это встроенная утилита Unix, предназначенная для перемещения и переименования отдельных файлов. rename — это инструмент на основе Perl, специально разработанный для массового переименования с использованием регулярных выражений. Для отдельных файлов используйте mv. Для массовых операций с шаблонами используйте rename.

Работает ли rename одинаково на всех дистрибутивах Linux?

Существует две распространенные версии rename: версия на основе Perl (распространена на Debian/Ubuntu) и более простая версия на основе C (распространена на некоторых системах на основе RHEL). Версия Perl поддерживает полные регулярные выражения; версия C использует более простую подстановку строк. Всегда проверяйте, какая версия установлена, с помощью rename --version.

Как переименовать файлы с пробелами в их названиях?

Всегда заключайте имена файлов и переменные в кавычки:

mv "my old file.txt" "my_new_file.txt"

Или используйте rename с глобальной подстановкой:

rename 's/ /_/g' *

Заключение

Переименование файлов в терминале Linux — это навык, который масштабируется от простых одноразовых изменений до полностью автоматизированных пакетных операций с тысячами файлов. Основные инструменты, которые необходимо освоить:

  • mv — для быстрого переименования отдельных файлов
  • rename — для мощных пакетных операций на основе regex
  • find + mv — для рекурсивных рабочих процессов в нескольких директориях
  • for циклы — для простых и понятных пакетных скриптов

Всегда предварительно просматривайте изменения с помощью пробных запусков, заключайте переменные в кавычки и создавайте резервные копии критических данных перед выполнением операций массового переименования.

Если вы управляете файлами на сервере Linux и ищете надежную высокопроизводительную среду хостинга, изучите решения AlexHost — от VPS Hosting и Dedicated Servers до полностью управляемых VPS Control Panels — все оптимизированы для Linux рабочих нагрузок.