Подскажите плиз по bash сценарию .

winnt
На сайте с 02.05.2009
Offline
83
807

Есть скрипт , вот:

#!/bin/bash

for f in *.3gp;

do MP4Box -splits 5000 "$f"; done

mkdir "$dir ${f%.flv}"

rm "$f"

mv "$f(_*.3gp) /$dir(_*.3gp)"

Принцип его работы:

Копируем скрипт в директорию на сервере где есть файлы : a.3gp , b.3gp , c.3gp

запускаем этот скрипт, он режет эти файлы на указанные размеры и мы получаем:

a_01.3gp

a_02.3gp

b_01.3gp

b_02.3gp

c_01.3gp

c_02.3gp

количество этих файлов зависит от размера исходного файла и размер части на которую мы его режем (их может быть и 10, и 100)

Далее скрипт создает папки (в этой же директории)

с названием исходных видео:

a

b

c

Потом скрипт удаляет исходные файлы: a.3gp , b.3gp , c.3gp

И последний шаг: mv "$f(n_*.3gp) /$dir(n_*.3gp)" (который я не знаю как реализовать):(

Скрипт должен переместить все файлы ( по их имени, не учитывая маски после пробела _*.3gp )

По своим папкам :

то есть переместить все порезанные файлы:

a_01.3gp

a_02.3gp и тд.

в папку /a

все файлы с именем b

b_01.3gp

b_02.3gp

в папку /b

Вот это я и не знаю как реализовать , подскажите пожалуйста, кто знает. :(

M
На сайте с 16.09.2009
Offline
278
#1

mv a_[0-9]*.3gp /a/

?

Абонементное сопровождение серверов (Debian) Отправить личное сообщение (), написать письмо ().
winnt
На сайте с 02.05.2009
Offline
83
#2

myhand, мне надо чтоб скрипт сам переместил файлы по папкам, чтоб не вводить название файлов и папок вручную, просто этих файлов может быть и 1000, и указывать для каждого файла руками название и директорию, мне не подходит :)

может как-то так: mv $f_[0-9]*.3gp /$dir/ ? просто сейчас не могу пока протестировать .

M
На сайте с 16.09.2009
Offline
278
#3

вы бы лучше описали просто логику скрипта

пример в начале топика - не делает даже близко того, что нужно

как-то так:


#!/bin/sh

for f in *.3gp
do
MP4Box -splits 5000 $f
d=${f%.3gp}
mkdir $d
mv $d_[0-9]*.3gp $d/
rm -f $f
done
winnt
На сайте с 02.05.2009
Offline
83
#4

myhand, Спасибо, все режет и создает папки но вот файлы не перемещает в эти папки, вот что выдает:

mv: cannot stat `[0-9]*.3gp': No such file or directory

M
На сайте с 16.09.2009
Offline
278
#5

поправочка: mv ${d}_[0-9]*.3gp $d/

winnt
На сайте с 02.05.2009
Offline
83
#6

myhand, Очень вам признателен ,🍻 все отлично работает)))

winnt добавил 11.11.2009 в 19:44

:)А вот есть еще один скрипт , он кодирует видео сначала в 3gp потом те же ролики в mp4, а потом просто удаляет исходные видео файлы, я его склеел с двух разных скриптов, запускал все вроде работает, но может вы глянете :o, просто может я что не так с ним сделал или надо синтаксис подправить?

#!/bin/bash

echo "fakap mp3-to-flv converter http://blog.fakap.net/mp3toflv/"

echo "Copyright (c) mypapit 2007"

echo ""

if (($# ==0))

then

echo "Usage: flvto3gp [flv files] ..."

exit

fi

while (($# !=0 ))

do

ffmpeg -i $1 -s 176x144 -vcodec h263 -r 15 -b 135k -acodec libfaac -ac 1 -ar 22000 -ab 56k "gp/${1%.flv}.3gp"

shift

done

echo "Finished fakaping with flv-to-3gp converter"

echo "\"fakap all those nonsense!\""

echo ""

for f in *.flv;

do ffmpeg -r 25 -g 25 -i "$f" "mp4/${f%.flv}.mp4" -threads 0 -b 250k -bt 250k -s 320x240 -vcodec mpeg4 -acodec libfaac -ac 1 -ar 22000 -ab 56k

done

rm -f $f

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий