В общем сделал сам основную часть, помогите доработать:
#!/bin/bash
cd /home/simon/Рабочий\ стол/test
#смена каталога
path=/home/simon/Рабочий\ стол/test/
arhiv=$path/arhiv/
#объявление переменных
touch $path/log.txt
#создаём лог
ls -d */ -l | grep -v arhiv | awk '{print $9}' > $path/log.txt
#вывод списка имен директорий (Кроме папки Архив) с камерами построчно и парсинг сохраняем в лог-файл
cols=$(cat $path/log.txt | wc -l)
#присвоение переменной $cols значение числа строк
N=0
#назначение переменной равной числу первой строки из лога
$tochkaN ${}
#создаём пустой массив
until [ "$N" -eq "$cols" ]
#Открываем условный цикл, с уловием, пока переменная $N не станет равна числу строк в логе $cols
do
echo ${tochka[$N]}=(cut $path/log.txt | awk '{print $N}' | если имя папки с пробелами, экранировать)
#создать элемент массива с именем ${tochka[$N]}=значение строчки $N из лога
let $N+=1
#присвоить переменной $N значение равное "Число предыдущей строки + 1"
done
#условный цикл закончен
for $tochkaN in ${tochka*}
do запуск скрипта mkdir.sh
done
#выполнение цикла для каждого элемена массива
rm $path/log.txt
#удаляем лог
exit 0
Вот это нужно доработать.
cols=$(cat $path/log.txt | wc -l) - как присвоить переменной $cols число а не процесс выполнения cat (CAT считает количество строк кода текстового файла)?
$tochkaN ${}
#создаём пустой массив - Не правильно создан пустой массив?
until [ "$N" -eq "$cols" ]
#Открываем условный цикл, с уловием, пока переменная $N не станет равна числу строк в логе $cols
do
echo ${tochka[$N]}=(cut $path/log.txt | awk '{print $N}')
#создать элемент массива $tochkaN с именем tochka[$N]=значение строчки $N из лога
let $N+=1
#присвоить переменной $N значение равное "Число предыдущей строки + 1"
done
#условный цикл закончен
for массива in все элементы массива - какая тут семантика ?
do запуск скрипта mkdir.sh
Скрипт mkdir.sh лежит отдельно (как объеденить скрипты?).
############################ НАЧАЛО ЦИКЛА ############################
cd $path/${tochka[$N]}
#Смена каталога
if ! [ -d $path/${tochka[$N]}/Converted ];
then --
else mkdir "$path/${tochka[$N]}/Converted"
fi
#Создаём папку Converted если её нет
if ! [ -d $arhiv/${tochka[$N]}/ ];
then --
else mkdir $arhiv/${tochka[$N]}/
fi
#Создаём папку $arhiv/${tochka[$N]} если её нет
#Проверяем есть ли в этом каталоге папка Converted, если нет то создаём её
for invideo in `find -name '*.mp4'`; do ffmpeg -i $invideo -deinterlace -target pal-dvd Converted/${invideo%%.mp4}.avi; done;
#Конвертируем все mp4 фрагменты в avi через ffmpeg в папку 'Converted' (Поправить кодирование, чтобы занимало меньше места)
mencoder -ovc copy -oac copy -o Converted/$(date +%d-%m-%Y)-${tochka[$N]}.avi Converted/*.avi
#Склеиваем avi фрагменты в файл папки 'Converted'
mv $path/${tochka[$N]}/Converted/*.avi $arhiv/${tochka[$N]}/
#Перемещаем в архив склееный, сконвертированный файл
rm $path/${tochka[$N]}/*.mp4
#Чистим папку 'to4ka1' от фрагментов mp4
rm $path/${tochka[$N]}/Converted/*.avi
#Чистим папку 'Converted' от фрагментов avi
cd $path/
#Возвращаемся в исходный каталог
############################ КОНЕЦ ЦИКЛА ############################
В итоге должен получится скрипт, который конвертирует и склеивает множество видео фрагментов. Если названия папок с пробелами, то нужно сделать автоматическое экранирование пробелов. Единственное что смущает это размер итогового файла, он в несколько раз превышает совокупный объём фрагментов, но я думаю это решается с помощью настроек FFMPEG