Mmv
mmv — консольная утилита, позволяющая перемещать, переименовывать, копировать, соединять и связывать большие объемы файлов одной командой. Это особенно полезно, если требуется переименовать много файлов с похожими, но хитрым образом различающимися именами.
Хотя mmv делает много всего кроме переименования файлов, в этой статье я говорю только о переименовании, потому что именно его я делаю чаще всего.
Пусть в директории есть следующие файлы:
foo1.png foo2.png bar3.png
Вам нужно, чтобы все файлы с именами на «foo» начинались на «bar». Здесь это просто сделать вручную, но что если файлов будет сотни? Возможно, вам придется написать скрипт. Но mmv — прекрасное средство для нашей задачи:
mmv "foo*.png" "bar#1.png"
Команда выше приведет к файлам
bar1.png bar2.png bar3.png
Исходный шаблон
Mmv подбирает файлы по данному вами исходному шаблону. Далее выбранные файлы переименовываются в соответствии со вторым аргументом (целевым шаблоном). Исходный шаблон может содержать все привычные заполнители интерпретатора, такие как «*», «?» и «[]». Помните, что шаблоны нужно заключать в кавычки, иначе они будут раскрыты интерпретатором и mmv их не поймет!
Целевой шаблон
«#1» в целевом шаблоне — индекс заполнителя. Он совпадает с первым заполнителем, найденным в исходном шаблоне, «#2» — со вторым, и так далее. Mmv заменяет все вхождения индексов соответствующим текстом, попавшим под заполнитель в исходном шаблоне. В примере выше «#1» совпадает с числом после «foo» и до точки. Обратите внимание, что «??» — это два заполнителя, каждый из которых совпадает с одним символом!
Другие примеры
Шаблоны также можно использовать для обмена фрагментов в именах:
abc_123.txt def_456.txt ghi_789.txt
mmv "*_*.txt" "#2_#1.txt"
Команда выше даст
123_abc.txt 456_def.txt 789_ghi.txt
Другая хорошая штука, которую можно делать в mmv — замена регистра текста, совпавшего с заполнителем. Поместите «l» (нижний регистр) или «u» (верхний регистр) до «#» и числа в целевом шаблоне:
john.txt pete.txt
mmv "?*.txt" "#u1#2.txt"
Это дает
John.txt Pete.txt
Mmv пытается быть безопасным, насколько это возможно, чтобы избежать противоречий в переименовании, при которых файлы могут удаляться. Если, например, результат переименования приведет к тому, что два разных файла получат одно имя (таким образом, один будет перезаписан), mmv выдаст предупреждение и прекратит процесс.
Mmv также пытается верно обходиться с переименованиями, которые приводят к тому, что целевой файл по имени совпадает с одним из исходных. К примеру:
a aa
mmv "*" "a#1"
Это не перезапишет файл «aa» содержимым «a», а даст, как и ожидалось
aa aaa
Mmv есть в Debian по крайней мере с версии 3.1 (Sarge) и в Ubuntu после Warty. Для установки сделайте «apt-get install mmv».
- Переименование директорий может производиться только с опцией -r.
- Помните, что шаблоны нужно заключать в кавычки!