10 хороших привычек в UNIX
10.05.2011 изучение Линукса
В очередной раз IBM порадовала хоть и древней, но замечательной статейкой. Я многое не знал. Это бы не забывать ещё. Ну и пользуясь случаем, задам вопрос многомудрым читателям.
Вот есть такая команда — xargs. Она преобразует поданный на её вход вывод предыдущей команды и подставляет этот вывод аргументами к другой команде. Бессмысленный, но простой для понимания пример:
ls | xargs ls -l
Выведет список файлов в «длинной» форме, с подробностями.
Но какую команду использовать, чтобы на каждый такой аргумент вызывалась отдельная команда? Кстати, я раньше думал, что xargs для этого и предназначена, но ошибся. В общем, пока не знаю решения, а оно 100% есть. Найду — допишу сюда.
Ага! Параметр -exec команды find. Правда, не очень нравится мне такое решение, и синтаксис маленько инопланетный, тем не менее, работает. Пример только что скопировал из эмулятора терминала:
find *.xml -exec php test.php {} \; Работает.
Комментарии
Комментирование этой статьи закрыто.
« Переименование файлов в консоли PHP: функция подсчёта слов в тексте »
Тормоз man xargs:
xargs -L 1, запускает команду на каждую строчку
xargs -P 2, запускает паралельно не более 2х потоков (очень удобная фича xargs)
и открой для себя shell/bash
for f in `ls`; do ls -l $f; done
Не люблю циклы. Спасибо за -L 1! Внимательно читать маны всегда лень :)