cL0N31 Опубликовано 30 октября, 2009 Жалоба Поделиться Опубликовано 30 октября, 2009 нужно сконвертировать пару тон мп3 которые лежат по разным директориям... дерево каталогов нужно сохранить... в комплекте с lame есть 3 скрипта для массового конверта, но не один из них не создаёт директории а всё валят в один каталог... помогите отредактировать данный скрипт для моих целей чтоб всё запихалось как надо: #!/bin/sh# # auenc -- version 0.1## A wrapper for lame to encode multiple files. By default, a .wav# extension is removed and replaced by .mp3 .## © 1999 Gerhard Wesp <gwesp@cosy.sbg.ac.at> under the GPL.# set the variables below according to your tasteLAME=lameLAME_OPTS="-S -h -v -V 0 -b 256" # high quality, silent operationif [ $# -lt 1 ] ; then exec 1>&2 cat << _EOF_usage: $0 [options] file...options: -d --delete: delete original file after successful encoding_EOF_ exit 1fiunset DELETEcase "$1" in -d | --delete ) DELETE=1 ; shift ;;esacfor fdo $LAME $LAME_OPTS "$f" `basename "$f" .wav`.mp3 || { exec 1>&2 echo "encoding of $f failed, aborting..." exit 1 } if [ -n "$DELETE" ] ; then rm -f "$f" fidone Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
gogi Опубликовано 30 октября, 2009 Жалоба Поделиться Опубликовано 30 октября, 2009 cL0N31 писал(а) Fri, 30 October 2009 06:00 нужно сконвертировать пару тон мп3 которые лежат по разным директориям... дерево каталогов нужно сохранить... в комплекте с lame есть 3 скрипта для массового конверта, но не один из них не создаёт директории а всё валят в один каталог... помогите отредактировать данный скрипт для моих целей чтоб всё запихалось как надо: Если новые файлы должны оказаться в тех же какалогах, то, например, так #!/bin/sh# set the variables below according to your tasteLAME=lame#LAME=echoLAME_OPTS="-S -h -v -V 0 -b 256" # high quality, silent operation#LAME_OPTS=""if [ $# -lt 1 ]; then echo "usage: $0 [options] dir options: -d --delete: delete original files after successful encoding" exit 1fiunset DELETEcase "$1" in -d | --delete ) DELETE=1 ; shift ;;esacfind $1 -type f -name "*wav" | while read f; do dir=`dirname "$f"` newfile=$dir`basename "$f" .wav`.mp3 $LAME $LAME_OPTS "$f" $newfile || { echo "encoding of $f failed, aborting..." exit 1 } if [ -n "$DELETE" ] ; then rm -f "$f" fidoneexit 0 Если в новом дереве, то ещё нужно создать каталог mkdir -p $newdir в цикле перед запуском lame а базовый каталог для нового дерева во втором (или третьем, если первый -d) параметре передавать. Мне так думается Пишите, если нужно будет, поправим. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
cL0N31 Опубликовано 31 октября, 2009 Автор Жалоба Поделиться Опубликовано 31 октября, 2009 gogi: попробовал твой скрипт... короче он работает но совсем не так как мне надо... примерно такая ботва получилась: $ ~/auenc ~/dir1f = ~/dir1/dir2/dir3/some.wavdir = ~/dir1/dir2/dir3newfile = ~/dir1/dir2/dir3some.wav.mp3 короче там походу слеш пропущен, но мне не надо создавать файлы в тех же директориях с новыми именами... хреново объяснил, сорри... короче мне надо запихать файлы в совершенно отличный от dir1 каталог, но всю нижнюю структуру dir2, dir3 и тд нужно воссоздать под этим новым каталогом Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
gogi Опубликовано 31 октября, 2009 Жалоба Поделиться Опубликовано 31 октября, 2009 cL0N31 писал(а) Sat, 31 October 2009 04:56 попробовал твой скрипт... короче он работает но совсем не так как мне надо... короче там походу слеш пропущен, но мне не надо создавать файлы в тех же директориях с новыми именами... хреново объяснил, сорри... короче мне надо запихать файлы в совершенно отличный от dir1 каталог, но всю нижнюю структуру dir2, dir3 и тд нужно воссоздать под этим новым каталогом Я тебе дал направление, что нужно делать, если необходимо создать новое дерево каталогов. А ты не удосужился дописать две строки. Писать за тебя готовые скрипты - это не задача форума. Здесь принято помогать тем, кто сам пытается что-то сделать и чему-то научиться, но не получается в силу недостатка информации или опыта. #!/bin/bashLAME=lameLAME_OPTS="-S -h -v -V 0 -b 256" # high quality, silent operationif [ $# -lt 2 ]; then echo "usage: $0 [options] dir newdir options: -d --delete: delete original files after successful encoding" exit 1fiunset DELETEcase "$1" in -d | --delete ) DELETE=1 ; shift ;;esac[ ! -d "$1" ] || [ "X$2" != "X" ] || { echo "usage: $0 [options] dir newdir"; exit 1;}find $1 -type f -name "*wav" | while read f; do file=${f#$1} newdir=$(dirname "$2/$file") mkdir -p $newdir newfile="$newdir$(basename "$f" .wav).mp3" $LAME $LAME_OPTS "$f" "$newfile" || { echo "encoding of $f failed, aborting..." exit 1 } if [ -n "$DELETE" ] ; then rm -f "$f" fidoneexit 0 Обрати внимание на изменение в первой строке и на формат строки запуска скрипта. Каталоги можно задавать и с абсолютными и относительными путями. PS. Извиняюсь. Работать будет, но такой стиль самому глаз режет Вместо mkdir -p $newdir Стоит написать [ -d $newdir ] || mkdir -p $newdir || { echo "Can't create $newdir"; exit 1 } Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.