[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Не в тему: помогите с конвейером командной строки.



21.05.2015 07:28, Ста Деюс пишет:
> Доброго времени суток.
>
>
> Извините, что не по теме.
>
> Я пытаюсь сделать проигрывание свитков (files) с помощью
> "проигрывателя-м" (mplayer) :о) , используя конвейер - идея: проиграть
> все свитки каталогу в отсортированном порядке:
>
> ls |sort |mplayer
>
> ls |sort |mplayer -
>
> mplayer $(ls |sort)
>
> - ничего не работает: последний запускает проигрыватель с
>   отсортированным списком, но в названиях свитков есть пробелы, к.
>   никак не отрабатываются конвейером (и я у меня идеи даже нет как это
>   сделать), да и ожидает, он, похоже, ввод с клавиатуры. :о(
>
> В общем, вопрос: как сделать конвейер, хотя бы для свитков с названиями
> без пробелов?
>
> Спасибо за помощь!
>
>
> С уважением,
> Ста.
>
>
> Справка к моим сокращениям
> --
> к. - кои, коий и т.п.
> м/о - можно
>
>

Лично для себя использовал для этих целей (когда нужно передать много
файлов с пробелами одной команде) find с опцией -print0, который можно
было потом скармливать xargs -0. если нужен sort - то можно применить
sort -z. то есть что-то вроде

find . -maxdepth 1 -print0 | sort -z | xargs -0 mplayer
ну или совсем уж без трубопровода:
find . -exec mplayer {} +

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

find . -print0 | sort -z |xargs -n 1 -0 mplayer.

Кроме того ходит слух (
http://lists.gnu.org/archive/html/coreutils/2014-02/msg00005.html ) ,
что с разработчики ls считают его ориентированной для пользователя, а
потому во всех скриптах следует использовать именно find.

Reply to: