LINUX.ORG.RU

Re: Как выполнить операции над списком файлов в текстовом файле?

может с помощью awk вытаскивать строчки и экранировать пробелы, или с помощью sed

wfrr ★★☆ ()

Re: Как выполнить операции над списком файлов в текстовом файле?

xargs < file | xargs cat

phoenix ★★★★ ()

Re: Как выполнить операции над списком файлов в текстовом файле?

Хм. С echo - всё ок. А вот если mplayer'у скормить - то он показывает
только один ролик и выходит:

balancer@balpc /home/family/Documents/My Video $ cat fun.list | sort -R | while read i; do mplayer "$i" -vo gl2 -ao null -fs ; done
MPlayer dev-SVN-rUNKNOWN-4.1.2 (C) 2000-2008 MPlayer Team
CPU: Intel(R) Pentium(R) 4 CPU 3.00GHz (Family: 15, Model: 4, Stepping: 1)
CPUflags:  MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1
Скомпилировано для определения типа процессора во время выполнения.

Воспроизведение /home/family/Documents/My Video/Chinook Ground Resonance Testing.flv.

Обнаружен libavformat формат файла!
[lavf] Найден видео поток, -vid 0
[lavf] Найден аудио поток, -aid 1
VIDEO:  [FLV1]  320x239  0bpp  30.000 fps    0.0 kbps ( 0.0 kbyte/s)
SUB: Could not determine file format
Не могу загрузить субтитры: /home/family/Documents/My Video/Chinook Ground Resonance Testing.txt
Открываю видео фильтр: [pp=lb]
Открываю видео фильтр: [scale]
==========================================================================
Открываю декодер видео: [ffmpeg] FFmpeg's libavcodec codec family
Выбран видеокодек: [ffflv] vfm: ffmpeg (FFmpeg Flash video)
==========================================================================
[PP] Использую внешний фильтр постобработки, max q = 6.
==========================================================================
Открываю декодер аудио: [mp3lib] MPEG layer-2, layer-3
AUDIO: 22050 Hz, 2 ch, s16le, 8.0 kbit/1.13% (ratio: 1000->88200)
Выбран аудиокодек: [mp3] afm: mp3lib (mp3lib MPEG layer-2, layer-3)
==========================================================================
AO: [null] 22050Hz 2ch s16le (2 bytes per sample)
Начало воcпроизведения...
VDec: запрос vo config - 320 x 239 (предпочтимое цветовое пространство: Planar YV12)
[PP] Использую внешний фильтр постобработки, max q = 6.
VDec: использую Planar YV12 в качестве выходного csp (не 0)
Movie-Aspect не определён - премасштабирование не применяется.
[swscaler @ 0x87903d4]SwScaler: using unscaled yuv420p -> bgr24 special converter
VO: [gl2] 320x239 => 320x239 BGR 24-bit  [fs]
[gl2] You have OpenGL >= 1.2 capable drivers, GOOD (16bpp and BGR is ok!)
[gl2] antialiasing off
[gl2] bilinear linear
[Микшер] Нет аппаратного микширования, вставляю фильтр громкости.6 31% 
Не найдена привязка к клавише 'c'.                         
A:   0.5 V:   0.1 A-V:  0.425 ct:  0.003   0/  0 ??% ??% ??,?% 0 5 31% 
Не найдена привязка к клавише 'c'.                         
A:   1.9 V:   1.9 A-V:  0.019 ct:  0.171   0/  0 16% 28%  0.3% 0 6 30% 
Выходим... (Выход)

KRoN73 ★★★★★ ()

Re: Как выполнить операции над списком файлов в текстовом файле?

Да, предвосхищая вопрос с -playlist в mplayer. Во-первых, у меня в таком формате mplayer не хочет играть в случайном порядке (-shuffle просто игнорируется), во-вторых, вопрос интересен и в теоретической плоскости.

KRoN73 ★★★★★ ()

Re: Как выполнить операции над списком файлов в текстовом файле?

О! Разобрался с неюниксвейным методом. -shuffle в mplayer должен обязательно идти после -playlist, а не до... Ладно, пока хватит возиться, гости скоро :)

KRoN73 ★★★★★ ()

Re: Как выполнить операции над списком файлов в текстовом файле?

tr \\n \\0 < filelist | xargs -0 command

anonymous ()

Re: Как выполнить операции над списком файлов в текстовом файле?

>Если $i в кавычках брать, то же с mplayer не стыкуется?

Я в http://www.linux.org.ru/jump-message.jsp?msgid=2503580&cid=2503676 приводил команду, которой запускал. Если $i без кавычек, то, как и следует ожидать, mplayer вообще не находит файлов :) С кавычками запускает, но только один.

KRoN73 ★★★★★ ()

Re: Как выполнить операции над списком файлов в текстовом файле?

Странно, это как то противоречит концепции шелла, может об этом разработчикам намекрнуть.. я понял ты обошёл это через shuffle, перечитаю тред

baaba ★★ ()

Re: Как выполнить операции над списком файлов в текстовом файле?

Правильный способ — это разделять имена нулевым символом и скармливать нужной команде через xargs -0.

Нулевой символ — единственный, который в принципе не может присутствовать в имени файла пор чисто техническим причинам: он является признаком конца строки в C. Второй символ, который *в нормальных условиях* не должен быть в имени файла — это /, который является разделителем в путях, однако даже тут случай уже не такой однозначный (вмешавшись в фс на низком уровне можно сварганить файл с / в имени). Все остальные символы в имени файла могут быть без проблем (и пробелы, и табуляции, и переносы строк, и некорректные utf8-строки — что угодно), и это всегда нужно учитывать, если только не все эти файлы созданы тобой и ты твёрдо уверен, что там имена такие, как тебе надо.

ji ()

Re: Как выполнить операции над списком файлов в текстовом файле?

Да, забыл сказать — кавычки в имени файла тоже могут быть. :) И бэкслэши, например. А уж одинарные кавычки в названии каждого десятого mp3-файла есть.

ji ()

Re: Как выполнить операции над списком файлов в текстовом файле?

>balancer@balpc /home/family/Documents/My Video $ cat fun.list | sort -R | while read i; do mplayer "$i" -vo gl2 -ao null -fs ; done

может mplayer во втором запуске пытается читать с stdin, и ловит пайп с sort -R ..? попробуй поиграться с </dev/null 2&1> и т. д.

anonymous ()

Re: Как выполнить операции над списком файлов в текстовом файле?

cat file | tr \\n \\0 | xargs -n1 -0 printf 'Here we are: %s\n'

dilmah ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.