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

Расширения помогают операционной системе и пользователю определить формат файла и примерно понять, что внутри. Если вы видите файл с расширением .txt, вы ожидаете текст. Файл .exe обычно — исполняемый файл Windows, .sh — shell-скрипт для Unix-подобных систем.
Иногда нужно изменить расширение — например, переименовать текстовый файл в Bash-скрипт. Но простое изменение расширения не всегда достаточно: иногда нужно добавить shebang, дать права выполнения или убедиться в соответствии формата. Тем не менее, на Linux поменять расширение проще, чем кажется.
Изменение расширений через терминал
Расширение — часть имени файла. Если нужно изменить имя или расширение, используйте команду mv. Название mv расшифровывается как “move” — переместить. Операция переименования внутри той же директории эквивалентна перемещению с новым именем.
Базовый синтаксис:
mv file.oldext file.newextгде oldext и newext — старое и новое расширения.
Пример: изменить myscript.txt в myscript.sh:
mv myscript.txt myscript.shЕсли у вас нет прав на файл, перед командой может потребоваться sudo.
Важно: mv просто меняет имя. Он не конвертирует содержимое.
Переименование нескольких файлов одной командой
Если у вас целая папка файлов с неподходящими расширениями, можно использовать цикл bash:
for a in *.txt; do mv -- "$a" "${a%.txt}.pdf"; doneЭтот односложный цикл находит все файлы, оканчивающиеся на .txt, и переименовывает их в .pdf. Конструкция ${a%.txt} удаляет окончание .txt из имени.
Альтернативы и варианты:
- Использовать
findи-exec:
find . -maxdepth 1 -type f -name "*.txt" -exec bash -c 'for f; do mv -- "$f" "${f%.txt}.pdf"; done' _ {} +- Утилита
rename(Perl-версия):
rename 's/\.txt$/.pdf/' *.txt- Утилита
mmv(если установлена):
mmv "*.txt" "#1.pdf"- Через
xargs:
ls *.txt | xargs -I{} mv -- "{}" "{}.pdf"Выбор метода зависит от числа файлов, наличия специальных символов в именах и предпочтений по читаемости.
Графическое переименование

В большинстве окружений рабочего стола (GNOME/Nautilus, KDE/Dolphin, XFCE/Thunar) переименовать файл можно через менеджер файлов:
- Выделите файл.
- Правый клик → Rename (Переименовать) или нажмите F2.
- Измените имя, включая расширение, и нажмите Enter.
Это удобно для одиночных операций, но неудобно для массовых переименований.
Когда смена расширения не решит задачу
Важно понимать различие между расширением и содержимым файла:
- Расширение — часть имени, не гарантия формата. Файл с расширением
.pdfможет быть текстовым, если его просто переименовали. - Многие приложения опираются на сигнатуры (magic bytes) и MIME-типы, а не только на расширение.
Проверьте содержимое перед и после переименования:
file filenameКоманда file анализирует содержимое и сообщает предполагаемый формат. Если формат несоответствует новому расширению, конвертацию нужно выполнить отдельной программой (например, pandoc для текстовых форматов, convert/magick для изображений, ffmpeg для аудио/видео).
Пример: сменив .txt на .sh, вы не получите исполняемый скрипт, если в файле нет корректного shell-кода и соответствующих прав.
Полезные приёмы и шаблоны (cheat sheet)
- Сделать скрипт исполняемым:
chmod +x myscript.sh- Добавить shebang для bash в начало файла:
echo '#!/usr/bin/env bash' | cat - myscript.sh > /tmp/out && mv /tmp/out myscript.sh- Паттерн для удаления пробелов и перевода в нижний регистр:
for f in *; do mv -- "$f" "$(echo "$f" | tr 'A-Z ' 'a-z_' )"; done- Массовая конвертация форматов (пример PDF из TXT с помощью pandoc):
for f in *.txt; do pandoc "$f" -o "${f%.txt}.pdf"; doneКонтроль и безопасность
Важно:
- Не полагайтесь только на расширения при проверке файлов, особенно если файл пришёл из ненадёжного источника.
- Не давайте исполняемые права неизвестным файлам без проверки содержимого.
- Для сценариев автоматической обработки логируйте переименования и делайте резервные копии перед массовыми операциями.
Примечание: переименование системных файлов в каталогах, требующих прав root, может повредить систему. Действуйте осторожно и используйте -- после mv, чтобы избежать проблем с именами, начинающимися с дефиса.
Чек-листы по ролям
Администратор:
- Проверить владельца и права (ls -l).
- Использовать
findс тестами безопасности. - Делать резервные копии конфигураций.
Разработчик:
- Добавить shebang и права выполнения для скриптов.
- Запустить тесты после переименования.
- Убедиться, что CI/CD использует актуальные имена.
Обычный пользователь:
- Переименовать в графическом менеджере для одиночных файлов.
- Использовать простые циклы bash для папок с несколькими файлами.
Ментальные модели и heuristics
- “Имя — не содержимое”: расширение даёт подсказку, но не гарантирует формат.
- “Переименование — безопасно, если вы уверены в содержимом”: менять расширение можно, но проверяйте результат.
- “Автоматизация = логирование + бэкап”: перед массовыми операциями имейте откат.
Однострочный глоссарий
- mv — команда для перемещения/переименования файлов.
- расширение — часть имени после точки, указывающая ожидаемый формат.
- shebang — строка
#!в начале скрипта, указывающая интерпретатор. - MIME — тип содержимого, используемый для определения формата файла.
Краткое резюме
Переименование расширения в Linux — простая операция: используйте mv для одиночных файлов и циклы или специализированные утилиты для массовых изменений. Всегда проверяйте реальный формат с помощью file и не забывайте про безопасность: права и содержимое важнее имени.
Важно: смена расширения сама по себе не конвертирует формат. Если нужен реальный перевод формата — используйте конвертеры (pandoc, ffmpeg, imagemagick) и тестируйте результаты.
Ключевые команды и шаблоны находятся выше. Следуйте чек-листам по ролям и делайте резервные копии перед массовыми операциями.