Страница 1 из 1
bash. пробелы в файлах. как победить ?
Добавлено: 02 фев 2008, 03:48
kif0rt
Извиняюсь конечно за ламерский вопрос ... понадобилось мне написать простенький скрипт.
Что-то типа :
Код: Выделить всё
for i in *
do
ffmpeg -i $i -s 320x240 -b 386 -r 15 -aspect 4:3 -vcodec xvid -ar 44100 -ab 128 -acodec mp3 $i.avi
done
На файлах с пробелами оно спотыкается. Гугл ничего не подсказал. Точнее везде один и тот же пример :
find -print0 | xargs -0
Что посоветуете ?
Добавлено: 02 фев 2008, 04:41
rain
Код: Выделить всё
ls -1 | while read i;do something "$i" ; done
Добавлено: 02 фев 2008, 12:00
kif0rt
rain, не работает. На файле с пробелом вырубается.
Добавлено: 02 фев 2008, 12:02
kif0rt
rain, не работает. На файле с пробелом вырубается.
Добавлено: 02 фев 2008, 13:17
rain
Странно, в общем виде у меня работает
Код: Выделить всё
rain@acnote:/tmp/test$ ls
some picture 01.jpg.old some picture 02.jpg.old some picture 03.jpg.old some picture 04.jpg.old some picture 05.jpg.old
rain@acnote:/tmp/test$ ls -1 | while read i;do convert "$i" "${i%.jpg*}.png" ; done
rain@acnote:/tmp/test$ ls
some picture 01.jpg.old some picture 02.jpg.old some picture 03.jpg.old some picture 04.jpg.old some picture 05.jpg.old
some picture 01.png some picture 02.png some picture 03.png some picture 04.png some picture 05.png
сейчас буду ffmpeg ковырять
Добавлено: 02 фев 2008, 14:33
Llama
kif0rt, тут две проблемы:
1) for
2) ffmpeg
Первая проблема решается передергиванием $IFS, вторая проблема уже более частная.
В понедельнік авось доберусь до куска кода с IFS.
Добавлено: 02 фев 2008, 19:25
Quantum
Вызірае на вычварэньне, але павінна працаваць
Код: Выделить всё
for i in $(ls | tr [:blank:] [*]);
do
ffmpeg -i "$i" -s 320x240 -b 386 -r 15 -aspect 4:3 -vcodec xvid -ar 44100 -ab 128 -acodec mp3 "$i".avi ;
done
Добавлено: 03 фев 2008, 00:03
Berserker
лавіце яшчэ версію
find . -type f -exec ffmpeg -i "{}" -s 320x240 -b 386 -r 15 -aspect 4:3 -vcodec xvid -ar 44100 -ab 128 -acodec mp3 "{}".avi \;
Добавлено: 03 фев 2008, 01:11
kif0rt
Quantum, не сработало
Berserker, красава! пашет. спасибо.
Добавлено: 03 фев 2008, 14:16
Llama
если решать проблему имнно в shell, то получается так:
Код: Выделить всё
:~$ for i in `ls *mp3`
> do
> echo $i
> done
07
-
Farewell.mp3
guerrilla
urbana
-
Камень
маiм
белютэнем.mp3
master_klass.mp3
neuro_dubel_kraj.mp3
neuro_dubel_pidarasy.mp3
nrm_miensk_i_minsk.mp3
zet_aniol.mp3
z_o.mp3
:~$ export IFS="
> "
:~$ for i in `ls *mp3`
> do
> echo $i
> done
07 - Farewell.mp3
guerrilla urbana - Камень маiм белютэнем.mp3
master_klass.mp3
neuro_dubel_kraj.mp3
neuro_dubel_pidarasy.mp3
nrm_miensk_i_minsk.mp3
zet_aniol.mp3
z_o.mp3
Добавлено: 03 фев 2008, 15:36
kif0rt
Llama, Спасибо, буду знать.
Добавлено: 03 фев 2008, 18:02
Quantum
Цікава, у мяне заўжды працавала...
А на што лаецца?
Добавлено: 03 фев 2008, 21:41
kif0rt
Quantum, ошибок никаких не вылетает, но на файле с пробелом скрипт просто останавливается и всё.
Добавлено: 03 фев 2008, 21:45
rain
Странно, у меня вполне нормально отрабатывает.
Добавлено: 08 фев 2008, 13:43
ZvK
возьмите в кавычки