Используя sed
, Я могу искать и заменить текст в файле. Существует ли способ, которым я могу сделать поиск и замену имен файлов? Например, если у меня есть набор файлов в папке с именами как они:
Я хотел бы быстро переименовать всех тех запускающихся с нечто так, чтобы у них было 3 цифры вместо 2.
Существует сценарий Perl, который может уже быть в Вашей названной системе rename
или prename
.
rename 's/\d\d$/0$&/' foo*
При выполнении этого многократно, это продолжит вставлять нули. Для предотвращения этого эта версия только переименовывает файлы, которые заканчиваются в двух цифрах (предшествовавший по крайней мере одной нецифрой):
rename 's/([^\d])(\d\d)$/${1}0$2/' foo*
s///
команда замены\d
обозначает цифру$&
в первом примере обозначает все, что было подобрано между первыми двумя наклонными чертами (две цифры в этом случае)[^\d]
обозначает все символы ([]
) это не (^
) цифры (\d
)${1}
обозначает то, что было подобрано в первом наборе круглых скобок (нецифра), фигурные скобки устанавливают "1" прочь от литерала "0"$2
обозначает то, что было подобрано во втором наборе круглых скобок (две цифры), фигурные скобки не необходимы здесь, но Вы могли использовать ихПри использовании MacPorts существует пакет, названный renameutils. Я никогда не использовал его, но из описания, это может быть тем, что Вы хотите.
renameutils - инструменты, которые делают файлы переименования более легким Описанием ¶
renameutils содержит 5 программ: qmv, qcp, imv, icp, и deurlname
qmv и qcp используют помощь текстового редактора создать "план", который выполнен, когда файл сохранен - большой для пакетных перемещений
imv и icp являются интерактивными программами с GNU readline поддержка
deurlname удаляет закодированные символы URL из имени файла
Больше информации в домашней странице проекта http://www.nongnu.org/renameutils/
Посмотрите mmv
(должно быть доступно для всех видов Linux, но редко устанавливается по умолчанию).