На этот вопрос уже есть ответ здесь:
У меня есть несколько папок, и в каждой из них около 175 файлов. имена файлов похожи на
1.wav
2.wav
3.wav
......
175.wav
. Я должен переименовать их как
A1.wav
A2.wav
A3.wav
......
A175.wav
Другими словами, я должен добавить буквы в имена предыдущих файлов.
Мне интересно, есть ли простой способ сделать это.
Версия Ubuntu - 16.10
Есть много способов, моим собственным выбором будет цикл for:
for f in *.wav ; do mv "$f" "A$f" ; done
Это просто и легко модифицируется для других нужд ...
Пользователь prename
команда:
$ prename -nv 's/^(.*)$/A$1/' *.wav
1.wav renamed as A1.wav
2.wav renamed as A2.wav
3.wav renamed as A3.wav
Способ чтения очень прост:
*.wav
позволяет оболочке расширять подстановочный знак до списка всех файлов этот конец с .wav
. Когда оболочка выполнит полную команду, компьютер увидит prename -nv 's/^(.*)$/A$1/' 1.wav 2.wav 3.wav
и т. Д. Как фактическую команду. 's/^(.*)$/A$1/'
на самом деле является s/PATTERN/REPLACEMENT
регулярным выражением с группировкой (.*)
, что позволяет сгруппировать полное имя файла от начала ^
до конца $
и обращаться к нему как $1
. Обратите внимание, что переключатели -nv
предназначены для многословного -v
и сухого хода -n
. Если вы довольны тестовым прогоном, удалите -n
, чтобы применить фактическое переименование.
Используя rename
:
rename 's/([0-9]+).wav/A\1.wav/' *.wav
s/SEARCH-FOR/REPLACE-WITH/ within-this-files
([0-9]+)
содержит раздел числа затем, мы можем использовать его снова использование \1
. A\1.wav
: A
+ (numberic раздел) + .wav