Все когда-то сталкивались с этим: надо переименовать пару сотен файлов, и рука тянется к мышке. Потом вспоминаешь, что в Linux мышка — это для тех, кто ещё не узнал, что такое терминал.
Для одного файла — mv и забыл. Но как только их пачка, начинается та самая «магия» с циклами и регулярками. Разберём по порядку — без лишнего академизма.

mv — старый добрый

mv в Linux — это не только «переместить», но и «переименовать».

Синтаксис:

mv [OPTIONS] source destination
  • Если source — один файл, а destination — тоже файл → переименует.
  • Если destination — каталог → просто положит туда файл.
  • Если файлов несколько → destination обязан быть каталогом.

Пример:

mv file1.txt file2.txt

Файл просто переименовался. Без фокусов.

mv для пачки файлов

mv умеет переименовывать только по одному. Чтобы переименовать пачку — придётся склеивать с чем-то вроде for или find.

Пример с циклом for:

for f in *.html; do
    mv -- "$f" "${f%.html}.php"
done 
  • *.html — берём все файлы с этим расширением.
  • ${f%.html} — отрезаем .html и добавляем .php.
  • done — конец цикла, можно выдохнуть.

Пример с find:

find . -depth -name "*.html" -exec sh -c 'f="{}"; mv -- "$f" "${f%.html}.php"' \;

Красиво? Нет. Работает? Да. Но выглядит так, как будто писали под настроение в 3 часа ночи.

rename — для тех, кто дружит с регулярками

rename — инструмент, который сразу работает с кучей файлов и понимает Perl-регулярки. Тут уже без базовых знаний regexp можно нарулить беды.

Установка:

# Ubuntu/Debian
sudo apt install rename

# CentOS/Fedora
sudo yum install prename

# ArchLinux
yay perl-rename

Синтаксис:

rename [OPTIONS] 'perlexpr' files

Пример:

rename 's/.html/.php/' *.html
  • s/.html/.php/ — заменить .html на .php.
  • -n — посмотреть, что будет, без реального переименования.
  • -f — перезаписать, если файл с таким именем уже есть.

Ещё фокусы с rename

Заменить пробелы на _:

rename 'y/ /_/' *

Всё в нижний регистр:

rename 'y/A-Z/a-z/' *

Всё в верхний регистр:

rename 'y/a-z/A-Z/' *

Итог

  • Один файл → mv и живёшь спокойно.
  • Много файлов и нет желания ковыряться в циклах → rename.
  • Если регулярки пугают — начни с -n, чтобы не угробить полкаталога.

В Linux всё просто, пока не начинаешь автоматизировать. А потом становится… ещё проще, если привыкнуть.