У меня есть группа файлов с именем'thing_12345.doc '(любое 5-значное число, необязательно 12345). Мне нужно переименовать их всех просто в «нечто.doc». Это файловая система Unix, и я подозреваю, что есть способ сделать это с помощью одной команды ... Может ли любой гуру регулярных выражений Unix помочь?
Спасибо!
Этот вопрос задавался лот раз на SO:
Мои личные предпочтения - ммв . Но см. « Массовое переименование / копирование / ссылка Инструменты ».
@ OP, оболочка уже расширила ваш шаблон для вас, в вашем выражении mv вам не нужно указывать шаблон для 5 цифр снова.
for file in *_[0-9][0-9][0-9][0-9][0-9].doc do echo mv "$file" "${file%_*}.doc" done
rename 's/_[0-9][0-9][0-9][0-9][0-9]//' *.doc
используйте sed
ls *.doc | sed 's:\([^0-9_]\)[0-9_][0-9_]*\.doc:$(mv & \1.doc)' | /bin/bash
В FreeBSD вас может заинтересовать порт sysutils / renameutils. Команда qmv открывает ваш $ EDITOR и позволяет вам указать все переименования файлов в достаточно удобной среде. Я лично предпочитаю формат qmv -fdo (один столбец).
qmv
qmv -fdo
Да, rename принимает регулярные выражения в стиле Perl. Сделайте man rename.
rename
man rename