Переименование каталогов в Linux
- Переименование каталога в Linux не повреждает данные — меняется только путь к файлам. Используйте mv для простых случаев, файловый менеджер для GUI и rename или скрипты для массовых переименований.
- Перед массовыми операциями делайте проверку на совпадение имён и резервную копию; избегайте переименования системных директорий.
Быстрые ссылки
- Переименование не вредит данным
- Использование mv
- Использование файлового менеджера
- Команда rename
- Первые шаги с rename
- Использование rename с другими командами
- Когда что выбирать
Резюме
- Переименование каталога в Linux не затрагивает содержимое — меняется только путь к данным.
- Команда mv — самый простой и встроенный способ для переименования.
- Для сложных массовых преобразований удобно использовать Perl-версию rename с регулярными выражениями или комбинацию find + xargs + rename.

Переименование не вредит данным
Переименование каталогов — безопасная операция с точки зрения целостности файлов: содержимое каталога остаётся нетронутым. Меняется только имя каталога и путь, по которому к нему обращаются. Это важно понимать при переносе и упорядочивании проектов.
Важно
- Не переименовывайте системные каталоги (например /etc, /usr, /bin и т. п.) без полного понимания последствий — это может нарушить работу системы.
- Если операция требует sudo, убедитесь, что вы знаете, почему нужна повышенная привилегия.
Использование mv
В большинстве простых случаев достаточно команды mv — она есть в любой системе Linux и не требует установки.
mv происходит ещё со времён раннего Unix и изначально означает «move» — переместить. Если вы перемещаете директорию в ту же директорию, но с новым именем, это эквивалент переименованию.
Примеры:
Покажем список в текущем каталоге:
lsПереименование каталога old-work в archive-2:
mv old-work archive-2Если каталог находится не в текущей директории, указывайте путь:
mv ~/htg/old-work ~/htg/archive-2Проверяем:
lsСоветы по безопасности при использовании mv
- Перед массовыми операциями выполните dry-run: перечислите каталоги с помощью ls или find, чтобы подтвердить цель.
- Не используйте mv с шаблонами, если не уверены в результате; лучше сначала протестировать на копии.
Использование файлового менеджера
Графические файловые менеджеры (Nautilus / GNOME Files, Dolphin, Thunar и т. д.) позволяют переименовывать каталоги точечно.
В GNOME Files горячая клавиша для переименования — F2. Выберите каталог, нажмите F2, введите новое имя и подтвердите.

Введите новое имя и нажмите кнопку переименования.

После подтверждения каталог будет переименован.

GUI удобен для одиночных случаев и для пользователей, которые не комфортно себя чувствуют в терминале.
Команда rename
Когда нужно переименовать много каталогов по шаблону, команда rename даёт гибкость. Существует две несовместимые реализации rename: одна — простая утилита из coreutils, другая — Perl-основанная, поддерживающая регулярные выражения Perl. Мы рассказываем про Perl-версию, которая мощнее.
На разных дистрибутивах Perl-rename может называться по-разному:
- Fedora: prename
- Manjaro: perl-rename
- Ubuntu: rename или prename (оба могут быть ссылкой на file-rename)
Установка:
Ubuntu / Debian:
sudo apt install renameFedora:
sudo dnf install prenameManjaro / Arch:
sudo pacman -Sy perl-renameУбедитесь, что используемая вами версия поддерживает Perl-выражения.
Первые шаги с rename
Perl-версия rename принимает выражения в синтаксисе Perl и применяет их к именам файлов или каталогов.
Предположим, в каталоге есть папки с разным регистром. Приведём все имена к нижнему регистру:
rename 'y/A-Z/a-z/' *Пояснение выражения:
- y — оператор трансформации знаков (аналог tr в Perl).
- /A-Z/a-z/ — заменить все заглавные латинские буквы на строчные.
- — применить ко всем элементам текущего каталога.
Другой пример: заменить точное имя каталога gamma на epsilon-2:
rename 's/gamma/epsilon-2/' *Это выражение сделает замену во всех именах, где встречается строка gamma, поэтому каталог gamma-zeta превратится в epsilon-2-zeta. Чтобы заменить только целое имя, используйте якоря начала и конца строки:
rename 's/^gamma$/epsilon-2/' *
Советы:
- Используйте кавычки вокруг выражения, чтобы оболочка не интерпретировала спецсимволы.
- Сначала протестируйте выражение в каталоге с копиями или используйте вывод списка (см. ниже).
Использование rename с другими командами
rename не принимает поток ввода напрямую. Чтобы передать найденные имена из find, используйте xargs или опцию -exec. Пример: переименовать все каталоги, оканчивающиеся на -old, в -archive, включая вложенные каталоги.
find . -depth -type d -name "*-old" | xargs -r rename "s/old$/archive/"Разбор опций:
- . — начать поиск в текущем каталоге.
- -depth — глубинный (depth-first); сначала обрабатываются вложенные каталоги, что безопаснее при переименованиях деревьев.
- -type d — искать только каталоги.
- -name “*-old” — шаблон имен.
- | — передать результат дальше по конвейеру.
- xargs -r — не запускать команду, если вход пуст.
- rename “s/old$/archive/“ — само правило переименования.
Альтернативный вариант с -exec (без xargs):
find . -depth -type d -name "*-old" -exec rename "s/old$/archive/" {} +Преимущество -exec {} + — он группирует аргументы и безопаснее с пробелами в именах, хотя xargs с опцией -0 и find -print0 даёт сопоставимую надёжность.
Более безопасно с обработкой пробелов и специальных символов:
find . -depth -type d -name "*-old" -print0 | xargs -0 -r rename "s/old$/archive/"Перед выполнением реальных изменений полезно сначала вывести, какие имена будут изменены, без самой команды rename. Например:
find . -depth -type d -name "*-old" -printили показать, каким будет новый путь (пример на bash):
find . -depth -type d -name "*-old" -print0 | while IFS= read -r -d '' dir; do echo "$dir -> ${dir%old}archive"; doneКогда что выбирать
- Для одиночного переименования используйте mv — это просто и понятно.
- Для интуитивной работы вручную используйте файловый менеджер.
- Для массовых или шаблонных переименований используйте rename с регулярными выражениями.
- Для рекурсивных переименований в дереве используйте find + rename (+ xargs или -exec).
Типичные ошибки и когда это не работает
- Переименование не меняет содержимое, но может «сломать» относительные ссылки, если другие объекты ссылаются на старый путь.
- mv не проверяет на совпадение имён внутри целевой директории — если цель существует, mv переместит/слияние может произойти или содержимое перезапишется (в случае файлов); для директорий mv перезаписывать директории не будет, но перемещение может дать неожиданные результаты.
- rename в разных дистрибутивах — разные реализации. Убедитесь, что ваша версия поддерживает Perl-выражения.
- Переименование системных каталогов может привести к неработоспособности системы или сервисов.
Контрпример
- Переименование каталога, на который ссылается запущенный сервис через жёсткую ссылку или относительный путь, может привести к ошибкам. Прежде чем переименовывать служебные папки, проверьте конфигурации и процессы.
Чек-листы для ролей
Чек-лист для новичка
- Сделать резервную копию важных данных.
- Проверить, что вы в нужном каталоге (pwd).
- Использовать mv для одиночных переименований.
- Не использовать sudo без необходимости.
Чек-лист для разработчика
- Убедиться, что CI/CD и скрипты не зависят от старого пути.
- Обновить импорты и конфигурации.
- При массовых изменениях протестировать на ветке или копии проекта.
Чек-лист для системного администратора
- Проверить сервисы и unit-файлы systemd на жёсткие пути.
- Применять переименование в maintenance-окно, если нужно.
- В случае системных директорий — подготовить план отката.
Шпаргалка команд
Быстрые примеры, которые пригодятся часто:
Переименовать каталоги локально
mv oldname newnameПереименовать с полным путём
mv /path/to/old /path/to/newПереименовать всё в нижний регистр (Perl-rename)
rename 'y/A-Z/a-z/' *Переименовать точное имя gamma в epsilon-2
rename 's/^gamma$/epsilon-2/' *Переименовать рекурсивно каталоги, оканчивающиеся на -old
find . -depth -type d -name "*-old" -print0 | xargs -0 -r rename "s/old$/archive/"Проверочный вывод без изменений (показать, что будет сделано)
find . -depth -type d -name "*-old" -printМини-методология: безопасное массовое переименование за 6 шагов
- Опишите цель и желаемый шаблон имен.
- Выполните find/ls, чтобы собрать список кандидатов.
- Сымитируйте результат (echo, подсчёт) и проверьте выборку.
- Сделайте резервную копию или снимок состояния (архив, tar, rsync).
- Выполните переименование на тестовой копии.
- Запустите переименование в рабочем каталоге и проверьте сервисы.
Рисковая матрица и способы уменьшения риска
- Низкий риск: одиночные пользовательские каталоги. Митигаторы: обычная резервная копия.
- Средний риск: проекты с CI/CD, скриптами и относительными путями. Митигаторы: тестовый прогон, обновление конфигураций, уведомление команды.
- Высокий риск: системные каталоги и общие сервисные пути. Митигаторы: план отката, maintenance-окно, резервные копии и проверка зависимостей.
Критерии приёмки
- Все ожидаемые каталоги получили новые имена согласно шаблону.
- Никакие важные файлы не пропали и доступ к ним сохранён.
- Сервисы и скрипты, которые должны были работать после переименования, стартуют успешно.
- В журнале операций записана команда и время выполнения для аудита.
Совместимость и примечания для дистрибутивов
- Ubuntu/Debian: пакет rename предоставляет Perl-версию.
- Fedora: команда называется prename.
- Arch/Manjaro: пакет perl-rename.
Проверить, какая версия используется:
rename --versionИли получить путь к бинарнику:
which rename || which prename || which perl-renameЕсли команда не поддерживает Perl-выражения, установите соответствующий пакет или используйте альтернативный язык (python, bash) для сложных преобразований.
Примеры реальных сценариев
- Переименование множества экспортированных архивов, которые при распаковке дали каталоги в верхнем регистре:
# Привести все каталоги в текущей папке к нижнему регистру
rename 'y/A-Z/a-z/' */- Удалить префикс tmp- у каталогов из временных сборок:
rename 's/^tmp-//' tmp-*- Переименовать даты в формате YYYYMMDD на YYYY-MM-DD (пример на perl-rename):
rename 's/^(\d{4})(\d{2})(\d{2})$/\1-\2-\3/' 2020*Скрипт отката простого переименования
Если вы заранее подготовили лог переименований, откат можно автоматизировать. Пример лог-файла format: old_path|new_path
#!/bin/bash
LOG=rename.log
while IFS='|' read -r old new; do
if [ -d "$new" ] && [ ! -e "$old" ]; then
mv "$new" "$old"
else
echo "Пропуск: нельзя откатить $new -> $old"
fi
done < "$LOG"Глоссарий
- mv — встроенная утилита для перемещения/переименования файлов и каталогов.
- rename — утилита для массового переименования; Perl-версия поддерживает регулярные выражения.
- find — команда поиска файлов и каталогов по критериям.
- xargs — принимает поток ввода и формирует аргументы для командной строки.
Короткое объявление для команды (100–200 слов)
Мы планируем упорядочить структуру репозитория и привести имена каталогов к единому стандарту. Для одиночных изменений используйте mv или файловый менеджер. Для пакетных корректировок будет использована Perl-версия rename в сочетании с find. Перед началом работ будет выполнен тестовый прогон и создаётся резервная копия. Работы запланированы с учётом времени простоя сервисов, чтобы избежать влияния на рабочие процессы. Инструкции и чек-листы доступны в документации; при изменениях уведомим владельцев сервисов.
Заключение
Переименование каталогов в Linux — рутинная, но иногда чувствительная операция. Простые переименования решаются командой mv или через GUI. Для массовых и шаблонных преобразований лучше использовать Perl-rename, find и xargs. Всегда проверяйте выборку перед выполнением, делайте резервные копии и имейте план отката.
Если нужно, могу подготовить готовые скрипты для вашего дерева каталогов или проверить конкретное регулярное выражение на тестовой выборке.
Похожие материалы
OneNote для работы: руководство и шаблоны
Продвижение магазина на Etsy: 13 стратегий
Найти и заменить в Excel — текст, числа и форматирование
Создать точку восстановления в Windows через CMD и PowerShell
Как найти и убрать CPU/GPU бутылочное горлышко