Как быстро переименовать кучу файлов в папке - PullRequest
1 голос
/ 28 января 2010

У меня есть группа файлов с именем'thing_12345.doc '(любое 5-значное число, необязательно 12345). Мне нужно переименовать их всех просто в «нечто.doc». Это файловая система Unix, и я подозреваю, что есть способ сделать это с помощью одной команды ... Может ли любой гуру регулярных выражений Unix помочь?

Спасибо!

Ответы [ 6 ]

3 голосов
/ 29 января 2010

@ OP, оболочка уже расширила ваш шаблон для вас, в вашем выражении mv вам не нужно указывать шаблон для 5 цифр снова.

for file in *_[0-9][0-9][0-9][0-9][0-9].doc
do
  echo mv "$file" "${file%_*}.doc"
done
2 голосов
/ 28 января 2010

rename 's/_[0-9][0-9][0-9][0-9][0-9]//' *.doc

1 голос
/ 17 февраля 2013

используйте sed

ls *.doc | sed 's:\([^0-9_]\)[0-9_][0-9_]*\.doc:$(mv & \1.doc)' | /bin/bash
0 голосов
/ 16 января 2016

В FreeBSD вас может заинтересовать порт sysutils / renameutils. Команда qmv открывает ваш $ EDITOR и позволяет вам указать все переименования файлов в достаточно удобной среде. Я лично предпочитаю формат qmv -fdo (один столбец).

0 голосов
/ 28 января 2010

Да, rename принимает регулярные выражения в стиле Perl. Сделайте man rename.

...