Все когда-то сталкивались с этим: надо переименовать пару сотен файлов, и рука тянется к мышке. Потом вспоминаешь, что в 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 всё просто, пока не начинаешь автоматизировать. А потом становится… ещё проще, если привыкнуть.
0 комментариев