задача 1:
ужать битрейт в пакетном режиме с помощью lame. Для этого ищу все файлы *.mp3 в текущей директории и передаю lame. Но lame может воспринимать только имена файлов без пути. Т.е. вместо ./1_35.mp3 ему надо 1_35.mp3, а find возвращает именно с ./
пробовал дополнительно прогнать через basename - результат не очень:
$ find -iname '*.mp3' -print0 | xargs -0 basename | lame --preset voice -h
LAME 32bits version 3.97 (http://www.mp3dev.org/)
usage: lame [options] <infile> [outfile]
basename: extra operand `./1_35.mp3'
Try `basename --help' for more information.
задача 2:
схожая.
необходимо каждый файл с расширением *.fb2 (в папках и подпапках) заархивировать в *.fb2.tar.bz2. На каждый файл - отдельный архив. проблема в том, что tar'у надо передавать два аргумента: имя вх. файла и имя вых.файла. Пробовал сделать это, указывая после xargs параметр $1:
как можно оттюнинговать сей скрипт ,чтобы корректировать названия вых. файлов
формат lame: lame опции вх_файл вых_файл
по умолчанию формат (когда вых.файл не указывается) не очень удачный: 1_40.mp3.mp3
как можно воздействовать на второй агрумент - производную от имени первого аргумента (по аналогии с bzip2 {}.tar.bz2 {} )
Never stop thinking..................................................................
ИМХО в данном случае опасно использовать for in *,имена файлов часто содержат пробелы и проч.
к тому-же опять-таки можно потерять файлы из-за длинны строки.