CLI AI

Переименование сотен файлов: от `for`-циклов к обычной речи

2026-02-01

Массовые переименования — это та история, которая навсегда живёт во вкладке Stack Overflow. В shell есть полдюжины способов это сделать — mv в for-цикле, rename, prename, mmv, простой find -exec — и у всех есть маленькие выводящие из себя отличия между дистрибутивами.

1. Префикс с датой

clai
$ clai добавь сегодняшнюю дату префиксом ко всем .jpg→ for f in *.jpg; do mv -- "$f" "$(date +%Y-%m-%d)_$f"; done2026-04-27_DSC_0001.jpg2026-04-27_DSC_0002.jpg

-- "$f" делает реальную работу — не даёт mv принять имя файла, начинающееся с дефиса, за флаг. Легко забыть, когда пишете цикл сами.

2. Замена расширения

clai
$ clai замени .jpeg на .jpg для всех файлов в этой папке→ for f in *.jpeg; do mv -- "$f" "${f%.jpeg}.jpg"; done

Чистая shell-подстановка параметров, без внешних утилит. Работает одинаково на Linux и macOS — чего про rename не скажешь.

3. Нормализация пробелов

clai
$ clai замени пробелы на подчёркивания во всех именах файлов здесь→ for f in *\ *; do mv -- "$f" "${f// /_}"; donemy report.pdf -> my_report.pdfproject notes 2026.txt -> project_notes_2026.txt

Glob *\ * совпадает только с файлами, содержащими пробел, — цикл не запустится, если нечего делать. CliAI часто добавляет такие маленькие предохранители.

Когда clai обгоняет Bash-однострочник

Всё, что сложнее этих паттернов — конверсия регистра, regex-захваты, рекурсивные деревья — описывайте словами и пусть модель собирает правильный find -exec rename 's/.../...' '{}' + или mmv. Вы всё равно будете читать результат; inspect-then-run — это страховочная сетка.

См. также