Как изменить расширение файла в Linux

Расширения файлов помогают операционной системе и пользователям отличать форматы и понимать, что внутри файла. Расширение “.txt” обычно указывает на текст, “.exe” — на исполняемый файл Windows, а “.sh” — на оболочечный скрипт для Linux.
Иногда нужно изменить расширение: например, вы хотите переименовать текстовый файл в Bash-скрипт. Просто записать код в текстовый файл недостаточно — нужно изменить имя файла. В Linux это проще, чем кажется.
Переименование расширений из терминала
Расширение — часть имени файла. Для смены имени или расширения используется команда mv. mv расшифровывается как “move” (переместить) и в Unix-подобных системах служит и для перемещений, и для переименования файлов.
Базовый синтаксис для переименования:
mv file.oldext file.newextгде file.oldext — текущее имя, а file.newext — новое имя.
Пример: переименовать myscript.txt в myscript.sh
mv myscript.txt myscript.shЕсли у файла права, требующие повышенных привилегий, предварите команду sudo:
sudo mv /path/to/owned-by-root.txt /path/to/owned-by-root.shМассовое переименование через цикл Bash
Если нужно переименовать много файлов в папке, используйте цикл for:
for a in *.txt; do mv -- "$a" "${a%.txt}.pdf"; doneПояснение:
- *.txt — все файлы с расширением .txt в текущей папке.
- ${a%.txt} — параметрическое расширение имени: удаляет суффикс .txt.
- mv – “$a” … — опция – защищает от имён, начинающихся с -.
Массовое переименование с помощью rename
Во многих дистрибутивах доступна утилита rename. Имейте в виду: существуют две реализации rename с разным синтаксисом (Perl-версия и util-linux). Пример для распространённой Perl-версии:
rename 's/\.txt$/.pdf/' *.txtЭта команда применяет регулярное выражение ко всем файлам и заменяет суффикс .txt на .pdf.
Если unsure о версии rename, сначала запустите rename –version или прочитайте man rename.
Поиск и переименование рекурсивно
Для работы в дереве каталогов удобно использовать find с -exec или xargs:
find . -type f -name '*.txt' -exec bash -c 'for f; do mv -- "$f" "${f%.txt}.pdf"; done' _ {} +Или с rename (если установлена Perl-версия):
find . -type f -name '*.txt' -print0 | xargs -0 rename 's/\.txt$/.pdf/'Переименование в графическом интерфейсе
Откройте файловый менеджер (Nautilus, Dolphin, Thunar и др.), выделите файл, нажмите правую кнопку мыши и выберите «Переименовать». Измените имя, включая расширение, и нажмите Enter.
Многие менеджеры поддерживают клавишу F2 для быстрого входа в режим переименования.
Когда простая смена расширения не решит задачу
- Формат содержимого отличается от новой метки. Переименование .txt → .pdf не превратит текст в настоящий PDF; это лишь изменит имя файла. Программы, ожидающие реального PDF, могут не открыть файл.
- Исполняемые файлы: смена расширения не добавит исполняемых прав. Чтобы сделать файл выполняемым, используйте chmod +x filename.
- Специальные бинарные форматы и контейнеры (архивы, изображения, видео) имеют заголовки; неверное расширение может помешать автоматическому распознаванию.
Важно: прежде чем массово менять расширения, убедитесь, что содержимое действительно совместимо с новой меткой.
Альтернативные подходы
- Использовать утилиты конвертации (например, pandoc для текстовых форматов) — если нужно преобразовать данные, а не только имя.
- Использовать графические пакетные переименования (Bulk Rename Utility-подобные решения для Linux или встроенные плагины в файловых менеджерах).
- Для сложных трансформаций имён применять Python-скрипты с os.rename() и регулярными выражениями.
Быстрый набор команд (cheat sheet)
- Один файл: mv old.ext new.ext
- Несколько в папке: for a in *.old; do mv – “$a” “${a%.old}.new”; done
- С rename (Perl): rename ‘s/.old$/.new/‘ *.old
- Рекурсивно: find . -type f -name ‘*.old’ -exec …
- Сделать файл исполняемым: chmod +x file.sh
Мини-методология перед массовой операцией
- Сделайте резервную копию каталога или используйте git для трекинга имён.
- Выполните dry-run: для проверки списка файлов используйте echo или –no-act, если утилита поддерживает.
- Примените переименование на тестовой поддиректории.
- Проверьте результаты и только затем выполните на продакшн-данных.
Роли: краткие чеклисты
Администратор:
- Проверить права доступа и владельца файлов.
- Использовать sudo при необходимости.
- Сделать резервную копию системы конфигураций.
Разработчик:
- Убедиться, что сборочные скрипты и CI учитывают новые имена.
- Обновить shebang в скриптах (#!/bin/bash) и сделать файл исполняемым.
Пользователь рабочего стола:
- Переименовать через файловый менеджер или F2.
- Переподключить ассоциации приложений при необходимости.
Критерии приёмки
- Все целевые файлы получили новое расширение без потери содержимого.
- Скрипты, если требовалось, отмечены как исполняемые.
- Резервная копия доступна на случай отката.
- Тестовые приложения успешно открывают преобразованные файлы.
Примеры неудач и способы отката
- Ошибка: файлы стали недоступны в приложениях из-за несоответствия формата. Откат: восстановите копию или переименуйте обратно через цикл, заменив .new на .old.
Откат-пример:
for a in *.pdf; do mv -- "$a" "${a%.pdf}.txt"; doneЗаключение
Переименование расширений — простая операция в Linux: от mv для единичных случаев до циклов Bash, find и rename для пакетных задач. Однако важно понимать разницу между изменением имени и конвертацией формата. Всегда проверяйте содержимое и делайте резервные копии перед массовыми изменениями.
Короткое резюме:
- mv — универсальный инструмент для переименования.
- Для массовых операций используйте циклы, rename или find.
- Смена расширения не меняет внутренний формат файла.
Важно: перед массовым изменением выполните dry-run и создайте резервную копию.
Похожие материалы
Пикселизация лица в Photoshop
Подключение флешки к Android — руководство
Не устанавливается Windows 11 с USB — что делать
Конвертация Excel в CSV быстро и безопасно
Как добавить любую сумму на Steam