[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Вопрос по shell



Yuri,

Vot vam primer. Esli xotitie menyat  bsye faily v odnoi papke.

.wav na .mp3

red@redbox:~/test$ touch a.wav
red@redbox:~/test$ touch b.wav
red@redbox:~/test$ touch c.wav
red@redbox:~/test$ for i in `ls *.wav` ; do mv $i `basename $i .wav`.mp3 ; done ;
red@redbox:~/test$ ls -l
-rw-r--r-- 1 red red 0 2007-03-01 09:04 a.mp3
-rw-r--r-- 1 red red 0 2007-03-01 09:04 b.mp3
-rw-r--r-- 1 red red 0 2007-03-01 09:04 c.mp3
red@redbox:~/test$


efedov.Yuri@jinr.ru wrote:
On Wed, 28 Feb 2007, Mikhail Ramendik wrote:

On Monday 26 February 2007 03:33, Mikhail Gusarov wrote:

 MR> Вопрос: как корректно в shell script поменять последнюю часть
 MR> после точки (в досе говорили "расширение") файла? В смысле, есть
 MR> blablabla.wav, а надо blablabla.mp3 , для любого blablabla.

${foobar%.wav}.mp3

К сожалению, я не понял, как этим пользоваться. И в инете найти тоже не сумел.

Если в $1 у меня foobar.wav , где foobar произвольное, то что мне надо написать в скрипте, чтобы получить foobar.mp3 ?

 На выбор:
 1) newname=`basename $1 .wav`.mp3
 2) newname=`echo $1 | sed 's/\.wav$/\.mp3/'`
 3) newname=${1%.wav}.mp3

 последнее наименее переносимое, так как bash специфичное...

 Успехов,
 Юра



Reply to: