У меня есть несколько папок, и в каждой из них около 175 файлов. Имена файлов выглядят так:
1.wav
2.wav
3.wav
......
175.wav
Мне придется переименовать их как
A1.wav
A2.wav
A3.wav
......
A175.wav
Другими словами, мне приходится добавлять буквы в предыдущие имена файлов.
Мне интересно, есть ли простой способ сделать это.
Версия Ubuntu — 16.10
решение1
Есть много способов, но я бы выбрал цикл «for»:
for f in *.wav ; do mv "$f" "A$f" ; done
Это просто и легко модифицируется для других нужд...
решение2
Команда пользователя 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
переключатели предназначены для verbose -v
и dry-run -n
. Если вы довольны тестовым запуском, удалите, -n
чтобы применить фактическое переименование.
решение3
С использованием 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
+ (числовой раздел) +.wav