У меня есть этот каталог, и я хочу переименовать файлы:
===> ls -1 Der-vierte-Weise/
10 - 10 - Erkenntniss.ogg
1 - 01 - Hoffnung.ogg
11 - 11 - Wahrheit.ogg
12 - 12 - Dankbarkeit.ogg
13 - 13 - Kredits.ogg
2 - 02 - Familie.ogg
3 - 03 - Demut.ogg
4 - 04 - Freude.ogg
5 - 05 - Schoenheit.ogg
6 - 06 - Solidaritaet.ogg
7 - 07 - Entscheidung.ogg
8 - 08 - Hilfe.ogg
9 - 09 - Unterstuetzung.ogg
Результат должен выглядеть так:
===> ls -1 Der-vierte-Weise/
01 - Hoffnung.ogg
02 - Familie.ogg
...
Я хотел бы решить эту проблему с помощью обычных инструментов оболочки.
command-line
bash
batch-rename
guettli
источник
источник
Ответы:
Вы могли бы использовать
rename
...Удалить
-n
после тестирования, чтобы фактически переименовать файлыобъяснение
s/old/new/
заменитьold
наnew
^
начало строки[0-9]+
некоторые цифрыисточник
rename
инструментом. Использует ли он PCRE? ... было бы замечательно.rename
скрипт Perl, поэтому он имеет полную поддержку регулярных выражений Perl; PCRE - только часть этого. Однако все, что вы знаете из PCRE, будет применимо кrename
.rename
есть Perl-совместимые регулярные выражения. Да, реализация pcre не привыкает. Я понял это :-) Спасибо за ваш быстрый ответ.bash
Расширение параметра для удаления необходимой части с начала:Расширенная форма:
echo
для сухого хода; избавиться от него для реальных действий:Пример:
источник
rename
команду. (Меньше печатать нужно).rename
- путь, если вы знакомы с PCRE;rename
ответ был уже дан так должен двигаться с чистымbash
. Отметим,python
чтоre
(илиregex
) модуль не полностью совместим с PCRE.${f#[[:digit:]]*-[[:blank:]]}
безобразно. Да, это работает. Но мы живем в 21 веке. Я думаю, что пришло время перейти от «это работает» к «это легко и весело». Если целью является «это работает», то linux никогда не утратит предубеждение, что оно не является дружественным к пользователю. Поскольку вы уже получили много голосов «за», этот «за» голос не должен повредить (я надеюсь). Если это так, скажите мне, и я заберу это обратно.[[:digit:]]
и[[:blank:]]
его соответствие были вашимиlocale
, они также довольно распространены в Regex.