Bash-cкрипт пакетного кодирования *.wav в *.mp3 c помощью LAME

MP3-энкодер LAME по патентным соображениям не входит в состав некоторых дистрибутивов Linux, для Debian например его можно скачать с сайта Debian Unofficial. Почему-то закодировать все файлы в каталоге командой lame *.wav не удалось и пришлось написать скриптик:

#!/bin/bash
for i in *.wav
do
  b="`basename "$i" .wav`"
  lame --preset standard "$b".wav "$b".mp3
done

Любой программист (коими являются пользователи GNU/Linux) умеет применять циклы на практике и про такие тривиальные задачи знает. Хотя новичку (а они, благодаря популяризации, среди пользователей Linux появились) это может показать, что шелл это не только способ запустить какое-нибудь иксовое приложение. Под виндой шелл тоже умеет циклы и прочие базовые фичи любого интерпретатора, но он там настолько неудобен, что этим мало кто пользуется, а новички вобще про него незнают).

В этом конкретном случае цикл помоему у меня появился по неопытности, а юниксвей решения такой задачи -- перенаправление ввода-вывода всяких простых утилит, типа

find . -name '*.wav' -print0 | xargs -print0 lame --preset standard

Только этот комбайн я до конца не довел, с обработкой пробелов в именах файлов были проблемы.

for f in *.wav; do lame --preset standard "${f}" "${f%wav}mp3"; done

Красота :)

Post new comment

The content of this field is kept private and will not be shown publicly.

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Copy the characters (all lower case) from the image.