Видео ролики бесплатно онлайн

Смотреть гиг видео

Официальный сайт oriflame100 24/7/365

Смотреть видео бесплатно

|xed| 17.09.2009 12:10

Скрипты на bashпару вопросов...

пишу скриптики и иногда возникают довольно простые вопросы,но из за не дружбы с программированием и не знание некоторых фишек (синтаксиса итд) - возникают непонятки =(

собственно обращаюсь к вам.



1.пишу скрипт который будет конвертировать видео<�РЕШЕНО!>

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash

PATHdr=$1

for i in `cd $PATHdr && ls *.*|grep <.mkv/.avi/.mpeg>`

do

NEWFILE=`echo $i |sed -e 's/.avi/_new.avi/' | sed -e 's/.mkv/_new.avi/'| sed -e 's/.mpeg/_new.avi/' `

echo "newfile="$NEWFILE "file="$i

mencoder $i -oac lavc -ovc lavc -o $NEWFILE

done





есть проблемы, если файлы с пробелами то скрипт не работает =(



ls -1

Ohotnik 1.avi

tes t.mkv

Перевозчик 3.mkv



 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
newfile=Перевозчик  file=Перевозчик 

MEncoder dev-SVN-r26940 (C) 2000-2008 MPlayer Team

CPU: Intel(R) Pentium(R) 4 CPU 2.80GHz (Family: 15, Model: 3, Stepping: 4)

CPUflags: Type: 15 MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1

Compiled with runtime CPU detection.

File not found: '/mnt/video/tmp/Перевозчик'

Failed to open /mnt/video/tmp/Перевозчик.

Cannot open file/device.





а вот выполнение скрипта с за комментированной строчкой (mencoder $i -oac lavc -ovc lavc -o $NEWFILE)

newfile=Ohotnik file=Ohotnik

newfile=1_new.avi file=1.avi

newfile=tes file=tes

newfile=t_new.avi file=t.mkv

newfile=Перевозчик file=Перевозчик

newfile=3_new.avi file=3.mkv



РАБОЧИЙ ВАРИАНТ

 1
2
3
4
5
6
7
8
9
10
11
ls $1 |grep <.mkv/.avi/.mpeg>| while read i

do

NEWFILE=`echo "$i" | sed -e 's/.avi/_new.avi/' | sed -e 's/.mkv/_new.avi/'| sed -e 's/.mpeg/_new.avi/' `

echo "file="$i "newfile="$NEWFILE

mencoder "$i" -oac lavc -ovc lavc -o "$NEWFILE"

done



Спасибо:zivot_je_cudo,n0p, muhas, и всем кто принимал участие.



2.пишу скрипт которые будет создавать симлинки для видео фалов.

#!/bin/bash

DIR_OUT=/mnt/film/

DIR_IN=/mnt/video/

for i in `cd $DIR_OUT && ls *.avi`

do

ln -s $DIR_OUT$i $DIR_IN$i

done



-но тут опять возникает проблема с пробелами в файлах (такая же что и выше)

-в катологе /mnt/film/ с не большой периодичностью удаляются файлы, те симлинки в каталоге /mnt/video/ дохнут ... следовательно надо проверять симлинки в каталоге на актуальность и дохлые ссылки удалять...вопрос как? проверить дохлая ли ссылка (желательно с примерами)




Тэги: bash вопрос скрипты
+ 4 -
Похожие Поделиться

zivot_je_cudo 17.09.2009 12:17 #
+ 3 -
Заключай переменный в "-кавычки.
drujebober 17.09.2009 12:23 #
+ 0 -
да… двойные кавычки тебя спасут!
|xed| 17.09.2009 13:03 #
+ 0 -
куда вы хотите те чтобы я впихнул " " ???
zivot_je_cudo 17.09.2009 13:15 #
+ 3 -
Как-нибудь так: #!/bin/bash
< -x $1 > && PATHdr=$1
for i in $PATHdr*.{mkv,avi,mpeg}; do
NEWFILE=`echo "$i"|sed -e 's/\.(avi|mkv|mpeg)/_new\.avi/' `
echo "newfile=$NEWFILE" "file=$i"
#mencoder "$i" -oac lavc -ovc lavc -o "$NEWFILE"
done
n0p 17.09.2009 13:21 #
+ 0 -
Еще раз.
<16:20:30>:: $ ls -1 | grep .avi
В ожидании чуда.avi
Вся белка (Ледниковый период).avi
День выборов - спектакль театра Квартет И.avi
День радио.avi
Каникулы строгого режима (Игорь Зайцев) <2009 г., Комедия, DVDRip>.avi

<16:20:34>:: $ for i in `ls | grep .avi` ; do echo "$i" ; done
В
ожидании
чуда.avi
Вся
белка
(Ледниковый
период).avi
День
выборов

спектакль
театра
Квартет
И.avi
День
радио.avi
Каникулы
строгого
режима
(Игорь
Зайцев)
<2009
г.,
Комедия,
DVDRip>.avi
zivot_je_cudo 17.09.2009 13:29 #
+ 0 -
Объясню понятнее, второй строкой выполняй for i in "`ls | grep .avi`" ; do echo "$i" ; done.
n0p 17.09.2009 13:47 #
+ 2 -
Хмм.. Ладно, был неправ. :)
n0p 17.09.2009 13:51 #
+ 0 -
Тогда получается, что вышеприведенный код все-равно не совсем верен, должно быть как-то так:
#!/bin/bash
< -x $1 > && PATHdr=$1
for i in "$PATHdr*.{mkv,avi,mpeg}"; do
NEWFILE=`echo "$i"|sed -e 's/\.(avi|mkv|mpeg)/_new\.avi/' `
echo "newfile=$NEWFILE" "file=$i"
#mencoder "$i" -oac lavc -ovc lavc -o "$NEWFILE"
done

n0p 17.09.2009 13:53 #
+ 2 -
Нет, я все-таки идиот.
/me ушел перечитывать man bash
|xed| 17.09.2009 14:11 #
+ 3 -
у меня тоже такое ощущение =\
Username 17.09.2009 12:38 #
+ -1 -
можно \еще \бэкслеши \перед \пробелами \писать
Username 17.09.2009 12:39 #
+ 4 -
да,\ я\ -\ дебил
|xed| 17.09.2009 13:03 #
+ 1 -
а вам я не верю =)
Username 17.09.2009 21:38 #
+ 1 -
в\ первый\ раз\ да\ -\ а\ сейчас\ это\ правда
n0p 17.09.2009 13:11 #
+ 0 -
Хитрые все какие :)
Конструкция for $i in `cmd` разгребает вход по разделителю. А разделитель сей - любой whitespace или перенос строки. Т.е. табы, пробелы, конец строки - все это разделитель в данном случае. И куда вы хотите кавычки приткнуть?

Я в подобных ситуациях выхожу из положения следующей конструкцией:
ls -1 ./ > /tmp/list
TMPFILE=/tmp/list
COUNT=`cat -n $TMPFILE | tail -n 1 | awk '{print $1}'`
I=1
while < $i -le $COUNT > ; do
FILE=`head -n $I $TMPFILE | tail -n 1`
# имеем имя файла :)
echo "$FILE"
let I=$I+1
done
rm -f $TMPFILE

Ужасное решение, я знаю :) Но работает :)
zivot_je_cudo 17.09.2009 13:12 #
+ 0 -
Удаление нерабочих симлинков на основе их нулевой длинны:
#!/bin/bash
for i in $DIR_IN/*; do
< -s "$i" > || rm "$i"
done
n0p 17.09.2009 13:15 #
+ -1 -
Не поможет. См. мой камент про for :)
zivot_je_cudo 17.09.2009 13:35 #
+ 0 -
rtfm
Username 18.09.2009 01:48 #
+ 0 -
пруф?
n0p 18.09.2009 08:02 #
+ 0 -
Я уже признал свою тупость, да :)
zivot_je_cudo 17.09.2009 13:25 #
+ 0 -
Коряво получилось, лучше так:#!/bin/bash
for i in *; do
< -h "$i" -a ! -s "$i" > && rm "$i"
done
muhas 17.09.2009 13:53 #
+ 2 -
ls pach_to| while read i
do
blablabla
done
каждая строка это файл. ну и кавычки не забываем в параметрах к mencoder
muhas 17.09.2009 13:57 #
+ 2 -

#!/bin/bash
ls $1 |grep <.mkv/.avi/.mpeg>| while read i
do
NEWFILE=`echo $i |sed -e 's/.avi/_new.avi/' | sed -e 's/.mkv/_new.avi/'| sed -e 's/.mpeg/_new.avi/' `
echo "newfile="$NEWFILE "file="$i
mencoder $i -oac lavc -ovc lavc -o "$NEWFILE"
done

В хорошем качестве hd видео

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн