10 хороших привычек в UNIX

10.05.2011

В очередной раз IBM порадовала хоть и древней, но замечательной статейкой. Я многое не знал. Это бы не забывать ещё. Ну и пользуясь случаем, задам вопрос многомудрым читателям.

Вот есть такая команда — xargs. Она преобразует поданный на её вход вывод предыдущей команды и подставляет этот вывод аргументами к другой команде. Бессмысленный, но простой для понимания пример:
ls | xargs ls -l
Выведет список файлов в «длинной» форме, с подробностями.

Но какую команду использовать, чтобы на каждый такой аргумент вызывалась отдельная команда? Кстати, я раньше думал, что xargs для этого и предназначена, но ошибся. В общем, пока не знаю решения, а оно 100% есть. Найду — допишу сюда.

Ага! Параметр -exec команды find. Правда, не очень нравится мне такое решение, и синтаксис маленько инопланетный, тем не менее, работает. Пример только что скопировал из эмулятора терминала:
find *.xml -exec php test.php {} \; Работает.

Комментарии

  1. # nugops: 

    Тормоз man xargs:
    xargs -L 1, запускает команду на каждую строчку
    xargs -P 2, запускает паралельно не более 2х потоков (очень удобная фича xargs)
    и открой для себя shell/bash
    for f in `ls`; do ls -l $f; done

  2. # Тормоз

    Не люблю циклы. Спасибо за -L 1! Внимательно читать маны всегда лень :)

Комментирование этой статьи закрыто.

Интересное Покупки ТехникаРазное Отдых Статьи Строительство Услуги Общество Хобби Культура Советы Уют