> ~/a.txt Помогите, кто знает и может." /> > ~/a.txt Помогите, кто знает и может." /> Пакетная обработка с bash? - Ubuntu.ru

Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Пакетная обработка с bash?  (Прочитано 4279 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Zhook

  • Автор темы
  • Участник
  • *
  • Сообщений: 182
  • Super Zhook. Xubuntu 12.04; GIMP 2.8; Pentium 4; Geforce 6600.
    • Просмотр профиля
Пакетная обработка с bash?
« : 16 Июня 2012, 17:22:34 »
Помогите, пожалуйста, найти команды.
Требуется вывести список файлов в папке типа
1.avi
2.avi
3.avi
в текстовый документ, так, чтобы к каждой строке подставляло одно и то же, и получалось примерно так:
explay 1.avi n
explay 2.avi n
explay 3.avi n
Или, чтобы значния из столбика по очереди подставлялись в переменную $asd с последующим выполнением команды
echo "explay" $asd "n" >> ~/a.txt
Помогите, кто знает и может.
Эх!Думаете шесть маленьких лапок на одну большую клавиатуру - это удобно??!

Оффлайн Дмитрий Бо

  • Погонщик серверов
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 3549
  • Я не техподдержка, я за порядком слежу
    • Просмотр профиля
Re: Пакетная обработка с bash?
« Ответ #1 : 16 Июня 2012, 17:52:41 »
for line in *; do echo "explay $line n"; done > ~/a.txt

Оффлайн Zhook

  • Автор темы
  • Участник
  • *
  • Сообщений: 182
  • Super Zhook. Xubuntu 12.04; GIMP 2.8; Pentium 4; Geforce 6600.
    • Просмотр профиля
Re: Пакетная обработка с bash?
« Ответ #2 : 16 Июня 2012, 18:54:43 »
Цитировать
как минимум, не стоит называть свою переменную $PATH, в системе уже есть переменная с таким именем. Поэтому и приходится ниже писать полный путь к explay.
Я понимаю, что работает и так, но это плохой пример для других сейчас и для себя в будущем, так что лучше исправь.

Вот, что получилось. Спасибо огромное! :)
#!/bin/bash -x
> $1/z
echo "#!/bin/bash" >> $1/z
AVIS=$(ls $1 | grep ".avi")
FLVS=$(ls $1 | grep ".flv")
for line in $AVIS $FLVS;
do echo "explay" $line "n" >> $1/z;
done ;
echo "exit 0" >> $1/z
chmod +x $1/z
cd $1
./z
echo "OK"
exit 0

Пользователь решил продолжить мысль 17 Июня 2012, 08:24:56:
Ещё два вопроса:"Как заставить bash ставить \ между двойными и т.п. именами файлов?" :-[
Например, hello world.avi вносился в список, как hello\ world.avi .  ???
Это через grep, awk, sed или есть какая то специальная утилита?
В принципе есть идея фильтровать awk и проверять как -z, но это просто много кода писать, т.к. слов может быть и больше, чем два.
#!/bin/bash

function checkfile ()
{
if [ -z "$abc"]; then
file=$(echo "explay" $line "n";)
else
file=$(echo "explay" $asd\ $abc  "n";)
}

AVIS=$(ls $1 | grep ".avi")
for line in $AVIS;
do
abc=$(echo $line | awk '{print $2}')
asd=$(echo $line | awk '{print $1}')
checkfile
echo $file
done
exit 0
А нельзя сделать то же, но короче?
Второй вопрос: "Почему лексема `}' в данном случае неожиданная, ведь функция без неё не заработает?"  ???
Заранее спасибо за помощь.
« Последнее редактирование: 17 Июня 2012, 08:24:56 от Zhook »
Эх!Думаете шесть маленьких лапок на одну большую клавиатуру - это удобно??!

Оффлайн Дмитрий Бо

  • Погонщик серверов
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 3549
  • Я не техподдержка, я за порядком слежу
    • Просмотр профиля
Re: Пакетная обработка с bash?
« Ответ #3 : 17 Июня 2012, 10:46:02 »
"Как заставить bash ставить \ между двойными и т.п. именами файлов?" :-[
Например, hello world.avi вносился в список, как hello\ world.avi .  ???
То, что я предлагал, но с экранированием пробела:
for line in *; do line1=`echo $line | sed 's/ /\\\ /g'`; echo "explay $line1 n"; done
Однако, кроме пробелов есть ещё символы, которые нужно экранировать. Предлагаю такой вариант:
for line in *; do line1=`echo $line | sed 's/"/\\\"/g'`; echo "explay \"$line1\" n"; done

Второй вопрос: "Почему лексема `}' в данном случае неожиданная, ведь функция без неё не заработает?"  ???
Потому что до "}" нужно завершить конструкцию "if ... then ... else ... fi"

Оффлайн Zhook

  • Автор темы
  • Участник
  • *
  • Сообщений: 182
  • Super Zhook. Xubuntu 12.04; GIMP 2.8; Pentium 4; Geforce 6600.
    • Просмотр профиля
Re: Пакетная обработка с bash?
« Ответ #4 : 17 Июня 2012, 11:10:36 »
Цитировать
for line in *; do line1=`echo $line | sed 's/"/\\\"/g'`; echo "explay \"$line1\" n"; done
Разносит в конечном файле имя по двум строкам:
#!/bin/bash
explay "my" n
explay "video.avi" n
exit 0
Эх!Думаете шесть маленьких лапок на одну большую клавиатуру - это удобно??!

Оффлайн Дмитрий Бо

  • Погонщик серверов
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 3549
  • Я не техподдержка, я за порядком слежу
    • Просмотр профиля
Re: Пакетная обработка с bash?
« Ответ #5 : 17 Июня 2012, 11:16:45 »
Полностью свой скрипт давай.

Оффлайн Zhook

  • Автор темы
  • Участник
  • *
  • Сообщений: 182
  • Super Zhook. Xubuntu 12.04; GIMP 2.8; Pentium 4; Geforce 6600.
    • Просмотр профиля
Re: Пакетная обработка с bash?
« Ответ #6 : 17 Июня 2012, 11:45:23 »
Их четыре:
инстайлер(запускается один раз от рута из папки с остальными скриптами, название не имеет значения):
#!/bin/bash
#setup
echo "Explay C40 Video Converter Setup"
ROOT_UID=0
if [ "$UID" -ne "$ROOT_UID" ]
then
  echo "Для работы сценария требуются права root."
  exit $E_NOTROOT
fi
cp ./explay /usr/bin/explay
mkdir ~/.explay-c40_converter
chmod 777  ~/.explay-c40_converter
chmod 775 /usr/bin/explay
chmod +x /usr/bin/explay
cp ./explay-package-convert /usr/bin/explay-package-convert
chmod 775 /usr/bin/explay-package-convert
chmod +x /usr/bin/explay-package-convert
echo "OK"
exit 0

головной скрипт(получает опции,передаёт менкодеру, даёт старт скрипту пакетной обработки,на некоторые шекоховатости типа закомментированных строк не обращайте внимания(ещё доделываю), название explay):
#!/bin/bash
#explay
function normal ()
{
    mencoder $file -o $output -ofps 15 -vf-add scale=160:90  -vf-add expand=160:128:-1:-1:1 -srate 44100 -ovc xvid -stereo 0 -xvidencopts bitrate=300:max_bframes=0:quant_type=h263:me_quality=0 -oac lavc -lavcopts acodec=mp2:abitrate=128
exit 0
}

function high ()
{
    mencoder $file -o $output -ofps 15 -vf-add scale=160:120 -vf-add expand=160:128:-1:-1:1 -srate 44100 -ovc xvid -stereo 0 -xvidencopts bitrate=400:max_bframes=0:quant_type=h263:me_quality=0 -oac lavc -lavcopts acodec=mp2:abitrate=128 ;
exit 0
}

function config ()
{
echo "Подсоедините устройство и укажите путь к нему"
echo "или укажите конечную папку не на устройстве(по умолчанию /tmp)."
echo "Если вы не знаете, как это сделать, нажмите h"
echo "Если в указанном пути используются имена, содержащие два или более слов,"
echo "используйте обратный слеш(\) перед пробелами."
echo "Путь к домашнему каталогу указывать как /home/имя_пользователя,"
echo "а не как ~/"
echo "Конфигурация вступит в силу при следующем запуске конвертера"
echo "Ваш ответ:"
read path
echo "hello" >> ~/.explay-c40_converter/expconfig
case "$path" in
"A" | "a" ) archive
;;
"" )
> ~/.explay-c40_converter/expconfig
echo "/tmp" >> ~/.explay-c40_converter/expconfig
echo "/tmp"
;;
* )
> ~/.explay-c40_converter/expconfig
echo $path >> ~/.explay-c40_converter/expconfig
echo "OK"
esac
exit 0
}
function input ()
{
echo "Пакетная обработка"
echo "Укажите папку с видеофайлами."
echo "Будут замечены только файлы форматов avi, mov, flv."
echo "Если вы не знаете, как это сделать, нажмите h"
echo "Если в указанном пути используются имена, содержащие два или более слов,"
echo "используйте обратный слеш(\) перед пробелами."
echo "Путь к домашнему каталогу указывать как /home/имя_пользователя,"
echo "а не как ~/"
echo "Ваш ответ:"
read path
case "$path" in
"" )
echo "Укажите путь!!!"
;;
* )
explay-package-convert $path
echo "Finished"
esac
exit 0
}

function inform ()
{

echo "Конвертер для проигрывателя Explay C40"
echo "Кодеки:"
echo "Видео XVID"
echo "Аудио MP2"
echo "15 fps"
echo "Конечная папка:"
cat ~/.explay-c40_converter/expconfig
echo "Использование: explay имя_видео параметр"
  echo "[n] - нормальное качество(по умолчанию)"
        echo "[h] - высокое качество"
echo "Например explay file.avi n"
}






#################################################################


echo "Ковертер видео для Explay C40"
if [ -z "$(cat ~/.explay-c40_converter/expconfig)" ]
 then echo "необходима настройка" ;
        config ;
fi


file=$1
echo $file
ofold=$(head ~/.explay-c40_converter/expconfig)
echo $output
if [ -z "$3" ]
 then output=$ofold/$file.avi
else output=$3
fi
 if [ -z "$2" ]
  then  echo "Вы не указали опции кодирования!"
        echo "[n] - нормальное качество(по умолчанию)"
        echo "[h] - высокое качество"
        echo "[c] - выбрать конечную папку"
        echo "[i] - инфо"
        echo "[p] - пакетная обработка"
        read param
        else param=$2 ;
fi
case "$param" in
"N" | "n")
echo "normal"
normal
;;
"H" | "h")
echo "high"
high
;;
"C" | "c")
echo "config"
clear
config
;;
"P" | "p")
echo "packed"
clear
input
;;
"I" | "i")
echo "info"
clear
inform
;;
*) normal
echo "Нормальный"
esac;
exit 0
exit 0

Скрипт пакетного кодирования(тот, насчёт которого я спрашивал)(создаёт исполняемый z, передаёт ему строки и права, запускает его):
#!/bin/bash -x
> $1/z
echo "#!/bin/bash" >> $1/z
AVIS=$(ls $1 | grep -i ".avi")
FLVS=$(ls $1 | grep -i ".flv")
MOVS=$(ls $1 | grep -i ".mov")
for line in $AVIS $FLVS $MOVS;
do
echo "explay" $line "n" >> $1/z;
done ;
echo "exit 0" >> $1/z
chmod +x $1/z
cd $1
./z
echo "OK"
exit 0

Скрипт z(передаёт параметры скрипту explay,генерируется package-convertом, поэтому не считаю обязательным его приводить).
Если есть замечания, советы по содержанию скриптов, а также соображения по решению главного вопроса - пишите.
P.S. есть идея: если файл имеет двойное имя, его можно копировать в /tmp/avis и переименовывать без пробелов, а уже потом передавать конвертеру. :)
« Последнее редактирование: 22 Июня 2012, 13:20:16 от Zhook »
Эх!Думаете шесть маленьких лапок на одну большую клавиатуру - это удобно??!

Оффлайн Zhook

  • Автор темы
  • Участник
  • *
  • Сообщений: 182
  • Super Zhook. Xubuntu 12.04; GIMP 2.8; Pentium 4; Geforce 6600.
    • Просмотр профиля
Re: Пакетная обработка с bash?
« Ответ #7 : 19 Июня 2012, 13:21:05 »
Вот, появилась идея!
#!/bin/bash
#проверка двойного названия
function normal () #просто для проверки, в оригинале функция уже есть, запускает конвертирование.
{
echo $file
}
if [ -z $(echo $1 | grep ".avi")]
then
mkdir /tmp/avis
cp ./$1\ $2 /tmp/avis/1.avi
cd /tmp/avis
file=1.avi
else file=$1
fi
normal
exit 0
Вопросы:
Цитировать
if [ -z $(echo $1 | grep ".avi")]
then
mkdir /tmp/avis
cp ./$1\ $2 /tmp/avis/1.avi
Можно ли заставить проверять на наличие .avi не одну переменную $1, а, скажем, переменные $1, $2, $3 ... $10 и последующей подстановкой в cp не одной $1\, а числа несовпадающих(т.е. $1\ $2\ $3\... и так до тех пор, пока не обнаружится .avi)?
Цитировать
/tmp/avis/1.avi
Можно ли считать кол-во файлов в папке и задавать имя на 1 больше, чем имя предыдущего файла?(1.avi 2.avi 3.avi и т.п.)?
Если да, то проблема решена! :)
Эх!Думаете шесть маленьких лапок на одну большую клавиатуру - это удобно??!

Оффлайн Дмитрий Бо

  • Погонщик серверов
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 3549
  • Я не техподдержка, я за порядком слежу
    • Просмотр профиля
Re: Пакетная обработка с bash?
« Ответ #8 : 19 Июня 2012, 15:49:14 »
Это просто пипец какой-то :D Не надо так делать :)

Мне кажется, нужно полностью переобдумать архитектуру всего этого софтвара.

Оффлайн Zhook

  • Автор темы
  • Участник
  • *
  • Сообщений: 182
  • Super Zhook. Xubuntu 12.04; GIMP 2.8; Pentium 4; Geforce 6600.
    • Просмотр профиля
Re: Пакетная обработка с bash?
« Ответ #9 : 19 Июня 2012, 16:05:20 »
Цитировать
Это просто пипец какой-то :D Не надо так делать :)

Мне кажется, нужно полностью переобдумать архитектуру всего этого софтвара.
Куча скриптов - это пока думаю, изучаю способы заставить его работать.(изначально вообще каждая функция была отдельно).
Потом сведу всё в три(инстайлер, основной, z(впоследствии после конвертирования буду удалять)).
Или вы про что-то другое?(само содержание скрипта)
Если да, то как можно его улучшить? ???

Как думаете, что делать с двойными и т.п. файлами(my video.avi)?
Прим.Я заметил - mencoder двойные файлы конвертировать отказывается просто так.
Заранее благодарен.
Эх!Думаете шесть маленьких лапок на одну большую клавиатуру - это удобно??!

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Пакетная обработка с bash?
« Ответ #10 : 20 Июня 2012, 08:58:45 »
Можно ли считать кол-во файлов в папке и задавать имя на 1 больше, чем имя предыдущего файла?(1.avi 2.avi 3.avi и т.п.)?
Подсчет количества строк осуществляется с помощью "wc -l", например:
ls | wc -l
Лично мне арифметику в bash удобнее делать с помощью утилиты bc (это наиболее формальный способ написания без лишних заморочек). Пример для ясности:
COUNT="123"
COUNT=`echo $COUNT"+1" | bc -l`
« Последнее редактирование: 20 Июня 2012, 09:01:32 от alexander.pronin »

Оффлайн Дмитрий Бо

  • Погонщик серверов
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 3549
  • Я не техподдержка, я за порядком слежу
    • Просмотр профиля
Re: Пакетная обработка с bash?
« Ответ #11 : 20 Июня 2012, 09:05:54 »
Файл explay — это твоя программа, обёртка для mencoder, правильно? Что она делает?

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Пакетная обработка с bash?
« Ответ #12 : 20 Июня 2012, 09:23:36 »
ТС, не хочу вникать в ваши скрипты и ваши идеи. Но знаю, что все задачи по работе с видео рядами можно решать 2 утилитами:
ffmpeg
mencoder
Иногда требуется transcode, но это все вариации на одну и ту же тему.
ЗЫ.
Удобно для переименовывания файлов видео рядов использовать питон, мсм.
ЗЫ2.
Еще есть грабли такого плана.
Пишите названия файлов с нулями.
Это нужно для получения правильных видео
0001
0002
...
1000
1001
...
2000
2001

без стартовых нулей будет так

1
1000
1001
...
2
2000
2001

Почувствуйте разницу.

Оффлайн Zhook

  • Автор темы
  • Участник
  • *
  • Сообщений: 182
  • Super Zhook. Xubuntu 12.04; GIMP 2.8; Pentium 4; Geforce 6600.
    • Просмотр профиля
Re: Пакетная обработка с bash?
« Ответ #13 : 21 Июня 2012, 13:10:36 »
Цитировать
Файл explay — это твоя программа, обёртка для mencoder, правильно? Что она делает?
Смысл в чём: я счастливый пользователь MP3-проигрывателя explay. Для винды с проигрывателем прилагается конвертер для видео. В вайне он не работает. Видео, как вы могли видеть, имеет специфические настройки. Хочется удобства и в моей системе.
Есть опции, но не запускать же каждый раз длинную опцию в терминале. Вот и решил сделать сам. В будущем поработаю над красотой, удобством и интерфейсом, а сейчас главное - добиться работы.
Одиночные файлы я на своё устройство конвертирую, но как быть, если файлов много - только пакетно обрабатывать.
С файлами, состоящими из одного слова(1.avi)  уже решено, а вот как быть, если файл имеет имя из нескольких слов(my video.avi)? Моя идея в том, чтобы копировать файл с переименованием в нормальное название в папку /tmp/avis и уже оттуда конвертировать. Проблема в том, что файлы разделяются пробелами. Чтобы полностью вычислить имя надо, получается, искать в переменной ".avi", если его нет, то вбивать(echo) значение\ , а потом в эту же строку ставить следующее(если нет .avi, то опять же со слешем), чтобы в итоге получилось:
значение\ следующее значение\ ... значение в котором найдена фраза
my\ best\ video.avi
, а только потом переход echo на новую строку и т.д.
Думаю, это как-то можно сделать через введение новых переменных.
Подскажите пожалуйста, как это реализовать, если есть другие варианты(более удобные или рациональные) попробую все(все скрипты есть у Вас, если они и изменились, то незначительно и лишь в плане проверки кода завершения).  :)

Цитировать
Код: [Выделить]

COUNT="123"
COUNT=`echo $COUNT"+1" | bc -l`

Спасибо, решилась проблема с названиями.

Цитировать
Еще есть грабли такого плана.
Пишите названия файлов с нулями.
Это нужно для получения правильных видео
0001
0002

Учту. :)

Цитировать
ТС, не хочу вникать в ваши скрипты и ваши идеи. Но знаю, что все задачи по работе с видео рядами можно решать 2 утилитами:
ffmpeg
mencoder
Используется mencoder.

Цитировать
Удобно для переименовывания файлов видео рядов использовать питон, мсм.

А ими не умею пользоваться. :-[
Эх!Думаете шесть маленьких лапок на одну большую клавиатуру - это удобно??!

Оффлайн Zhook

  • Автор темы
  • Участник
  • *
  • Сообщений: 182
  • Super Zhook. Xubuntu 12.04; GIMP 2.8; Pentium 4; Geforce 6600.
    • Просмотр профиля
Re: Пакетная обработка с bash?
« Ответ #14 : 22 Июня 2012, 13:24:17 »
Извините.
Выложил скрипт, а потом обнаружил, что чуть-чуть его отредактировал. :o
#!/bin/bash
#explay
function normal ()
{
    mencoder $file -o $output -ofps 15 -vf-add scale=160:90  -vf-add expand=160:128:-1:-1:1 -srate 44100 -ovc xvid -stereo 0 -xvidencopts bitrate=300:max_bframes=0:quant_type=h263:me_quality=0 -oac lavc -lavcopts acodec=mp2:abitrate=128
exit 0
}

function high ()
{
    mencoder $file -o $output -ofps 15 -vf-add scale=160:120 -vf-add expand=160:128:-1:-1:1 -srate 44100 -ovc xvid -stereo 0 -xvidencopts bitrate=400:max_bframes=0:quant_type=h263:me_quality=0 -oac lavc -lavcopts acodec=mp2:abitrate=128 ;
exit 0
}

function config ()
{
echo "Подсоедините устройство и укажите путь к нему"
echo "или укажите конечную папку не на устройстве(по умолчанию /tmp)."
echo "Если вы не знаете, как это сделать, нажмите h"
echo "Если в указанном пути используются имена, содержащие два или более слов,"
echo "используйте обратный слеш(\) перед пробелами."
echo "Путь к домашнему каталогу указывать как /home/имя_пользователя,"
echo "а не как ~/"
echo "Конфигурация вступит в силу при следующем запуске конвертера"
echo "Ваш ответ:"
read path
echo "hello" >> ~/.explay-c40_converter/expconfig
case "$path" in
"A" | "a" ) archive
;;
"" )
> ~/.explay-c40_converter/expconfig
echo "/tmp" >> ~/.explay-c40_converter/expconfig
echo "/tmp"
;;
* )
> ~/.explay-c40_converter/expconfig
echo $path >> ~/.explay-c40_converter/expconfig
echo "OK"
esac
exit 0
}
function input ()
{
echo "Пакетная обработка"
echo "Укажите папку с видеофайлами."
echo "Будут замечены только файлы форматов avi, mov, flv."
echo "Если вы не знаете, как это сделать, нажмите h"
echo "Если в указанном пути используются имена, содержащие два или более слов,"
echo "используйте обратный слеш(\) перед пробелами."
echo "Путь к домашнему каталогу указывать как /home/имя_пользователя,"
echo "а не как ~/"
echo "Ваш ответ:"
read path
case "$path" in
"" )
echo "Укажите путь!!!"
;;
* )
explay-package-convert $path
echo "Finished"
esac
exit 0
}

function inform ()
{

echo "Конвертер для проигрывателя Explay C40"
echo "Кодеки:"
echo "Видео XVID"
echo "Аудио MP2"
echo "15 fps"
echo "Конечная папка:"
cat ~/.explay-c40_converter/expconfig
echo "Использование: explay имя_видео параметр"
  echo "[n] - нормальное качество(по умолчанию)"
        echo "[h] - высокое качество"
echo "Например explay file.avi n"
}






#################################################################


echo "Ковертер видео для Explay C40"
if [ -z "$(cat ~/.explay-c40_converter/expconfig)" ]
 then echo "необходима настройка" ;
        config ;
fi


file=$1
echo $file
ofold=$(head ~/.explay-c40_converter/expconfig)
echo $output
if [ -z "$3" ]
 then output=$ofold/$file.avi
else output=$3
fi
 if [ -z "$2" ]
  then  echo "Вы не указали опции кодирования!"
        echo "[n] - нормальное качество(по умолчанию)"
        echo "[h] - высокое качество"
        echo "[c] - выбрать конечную папку"
        echo "[i] - инфо"
        echo "[p] - пакетная обработка"
        read param
        else param=$2 ;
fi
case "$param" in
"N" | "n")
echo "normal"
normal
;;
"H" | "h")
echo "high"
high
;;
"C" | "c")
echo "config"
clear
config
;;
"P" | "p")
echo "packed"
clear
input
;;
"I" | "i")
echo "info"
clear
inform
;;
*) normal
echo "Нормальный"
esac;
exit 0
exit 0
Вот правильный. В том тоже уже исправил, а то не могло найти файл.

Пользователь решил продолжить мысль 22 Июня 2012, 15:28:29:
Уже воспринимаются двойные имена, с тройными пока не додумал.
Вот до чего дошёл(правда пока пробую только через echo):
#!/bin/bash

BLUE="$(echo -e '\033[1;34m')"
CYAN="$(echo -e '\033[1;36m')"
GREEN="$(echo -e '\033[1;32m')"
MAGENTA="$(echo -e '\033[1;35m')"
RED="$(echo -e '\033[1;31m')"
YELLOW="$(echo -e '\033[1;33m')"
NORMAL="$(echo -e '\033[0;39m')"
 COUNT="0001"
numberline="1"
function outfilename ()
{
echo $COUNT;COUNT=`echo $COUNT"+1" | bc -l`; echo $COUNT
}
function outnum ()
{
echo $numberline;COUNT=`echo $numberline"+1" | bc -l`; echo $numberline
}
> $1/z.txt
#echo "#!/bin/bash" >> $1/z
mkdir /tmp/avis

AVIS=$(ls $1 | grep -i ".avi")
FLVS=$(ls $1 | grep -i ".flv")
MOVS=$(ls $1 | grep -i ".mov")
for line in $AVIS ;
do

if [ -z $( echo $line | grep -i ".avi" ) ]
then
echo $line >> z.txt

else
echo $line
line1=$(cat ./z.txt | awk NR==$numberline )
if [ -z $( echo $line1 )  ]
then
echo "$RED" $line "$NORMAL"
else
####А вот дальше надо думать########
line2=$line
line1=$(cat ./z.txt | awk NR==$numberline )
cp $1/$(cat ./z.txt | awk NR==$numberline )\ $line2 /tmp/avis/$COUNT.avi
echo /tmp/avis/$COUNT.avi
outfilename
> ./z.txt
fi
fi

done ;
exit 0
« Последнее редактирование: 22 Июня 2012, 15:28:29 от Zhook »
Эх!Думаете шесть маленьких лапок на одну большую клавиатуру - это удобно??!

 

Страница сгенерирована за 0.019 секунд. Запросов: 21.