У меня была группа файлов, которую я хотел бы последовательно переименовывать, файлы называются такими вещами, как
"System-Log-01-01-2009-NODATA.txt"
"Something-Log-01-01-2009-NODATA.txt"
И я хотел их в нижнем регистре, ггггммдд, расширение .log
"system.20090101.log"
"something.20090101.log"
mmv
но в конце концов благодаряrename
я могу использовать силу регулярных выраженийperl-rename
.Поскольку у меня нет команды переименования, я полагаюсь на это:
источник
mmv - это стандартная утилита linux для перемещения / переименования нескольких файлов. Он доступен в репозиториях для большинства дистрибутивов. Для вашего примера выше, вы можете сделать:
Для получения дополнительной информации, прочитайте эту статью или справочную страницу .
источник
rename
Утилита не очень "стандартная". Каждый дистрибутив поставляется с другимrename
инструментом. Например, здесь, в Gentoo,rename
он изsys-apps/util-linux
пакета и не поддерживает регулярные выражения.Хэмиш Даунер предположил
mmv
, что это кажется полезным, особенно для использования внутри скриптов.С другой стороны, в общем случае вы можете захотеть переименовать . Он имеет
qmv
иqcp
команды, которые откроют текстовый редактор по вашему выбору (мое предпочтение: Vim) и позволят вам редактировать имена файлов назначения там. После сохранения и закрытия редактора,qmv
/qcp
сделает все переименование.Оба
mmv
иqmv
достаточно умны, чтобы переименовывать файлы в правильном порядке, а также обнаруживать циклическое переименование, и автоматически создают временный файл, если это необходимо.источник
sys-apps/rename
пакет, который даст вам возможностьrenamexm
переименовать регулярное выражение, а также массовые прописные / строчные буквы и другие полезные вещиПо честному:
дает этот вывод:
Но:
rename -n 's/(\w+)-\w+-(\d{2})-(\d{2})-(\d{4})-NODATA\.txt$/$1.$4$3$2\.log/' *.txt && rename 'y/A-Z/a-z/' System.20090101.log
дает правильный вывод:
замена {-n} переключателя на {-v}
источник
Я создал небольшой скрипт bash для этого:
источник
ls
вывод синтаксического анализа - не самая лучшая идея. Случайный поиск обнаружил это длинное чтение в Unix. SE для вашего развлечения. | Кроме того, ваш ответ лучше сопоставить с вопросомtr '[:upper:]' '[:lower:]'