Перекодировать стопиццот файлов в N потоков

Jul 14, 2008 01:17

Для того чтобы перекодировать стопиццот файлов в N потоков (например кучу wav в mp3) на четырехядерном процессоре совершенно не обязательно писать безумный shell script. Достаточно утилиты make.

Makefile примерно вот такой:

all: $(patsubst %.wav,%.mp3,$(wildcard *.wav))

%.mp3 : %.wav
lame --quiet $< $@

Да, оно не любит пробелов в именах

Leave a comment

Comments 9

permea_kra July 14 2008, 02:54:45 UTC
>>Да, оно не любит пробелов в именах файлов.
lame --quiet "$<" "$@" ?

Reply

_pacak_ July 14 2008, 04:10:31 UTC
Пробелы make не любит

Reply

permea_kra July 14 2008, 04:26:29 UTC
А. Это обходится?
Кавычки всё равно не помешают, напарывался. (в именах файлов скобки были)

Reply

_pacak_ July 14 2008, 06:19:53 UTC
Обходится конечно. А кавычки я и так сам ставлю всегда. Этот файлик сооружался на скорую руку дабы пережать кучку 1.wav ... 348.wav

Reply


los_t July 14 2008, 03:11:56 UTC
Можно написать простенький скриптец (не очень безумный)

#!/bin/sh
NAME=`basename "$1" .wav`
[ -z "$NAME" ] && exit 1
lame --quiet "$1" "$NAME.mp3"

Обозвать его как-нить convert.sh

а потом find -name '*.wav' -print0 | xargs -r0 -n 1 -P 4 ./convert.sh

Reply

_pacak_ July 14 2008, 04:19:17 UTC
Есть и такой вариант, но когда файлов совсем много (или они не совсем mp3 и преобразование длится куда дольше) make удобнее - он сам сделит за тем что уже преобразовано, а что - нет. Достаточно объяснить lame чтобы промежуточные файлы он клал куда-нить в /tmp и процесс можно будет прерыавть в любой удобный момент и продолжать с того же [почти] самого места.

Reply


Leave a comment

Up