Как использовать > в команде xargs?

JQuery не может добавлять элементы к (кажется, они добавляют их в DOM-проводник, но не на экран).

Обходным путем является добавление со всеми элементами, которые вам нужны для этой страницы, а затем изменение атрибутов элементов с помощью .attr().

$('body')
  .append($(''))
  .mousemove( function (e) {
      $("#c").attr({
          cx: e.pageX,
          cy: e.pageY
      });
  });

http://jsfiddle.net/8FBjb/1/

146
задан Jesse Shieh 10 May 2009 в 18:51
поделиться

3 ответа

Не делайте ошибки, делая это:

sh -c "grep ABC {} > {}.out"

Это нарушит множество условий, включая необычные имена файлов, и невозможно правильно указать кавычки. Ваш {} всегда должен быть единственным полностью отдельным аргументом команды, чтобы избежать ошибок внедрения кода. Вам нужно сделать следующее:

xargs -I{} sh -c 'grep ABC "$1" > "$1.out"' -- {}

Применяется к xargs , а также к find .

Кстати, никогда не используйте xargs без -0 (за исключением случаев очень редкого и контролируемого одноразового интерактивного использования, когда вы не беспокоитесь об уничтожении ваших данных).

Также не анализируйте ls . Когда-либо. Используйте вместо него find : http://mywiki.wooledge.org/ParsingLs

Используйте find для всего, что требует рекурсии, и простой цикл с глобусом для все остальное:

185
ответ дан 23 November 2019 в 22:20
поделиться

Решение без xargs следующее:

find . -mindepth 1 -maxdepth 1 -type f -exec sh -c "grep ABC '{}' > '{}.out'" \;

... и то же самое можно сделать с xargs , оказывается:

ls -1 | xargs -I {} sh -c "grep ABC '{}' > '{}.out'"

Правка : одинарные кавычки добавлены после замечания lhunath .

39
ответ дан 23 November 2019 в 22:20
поделиться

Я предполагаю, что ваш пример является всего лишь примером, и что вы можете нужно> для прочего. GNU Parallel http://www.gnu.org/software/parallel/ может быть вашим спасением. Это не требует дополнительных кавычек, пока ваши имена файлов не содержат \ n:

ls | parallel "grep ABC {} > {}.out"

Если у вас есть имена файлов с \ n в нем:

find . -print0 | parallel -0 "grep ABC {} > {}.out"

В качестве дополнительного бонуса вы получаете параллельное выполнение заданий.

Посмотрите вступительные видеоролики, чтобы узнать больше: http://pi.dk/1

При установке за 10 секунд будет произведена попытка полной установки; если это не удается, персональная установка; если это не удается, минимальная установка:

$ (wget -O - pi.dk/3 || lynx -source pi.dk/3 || curl pi.dk/3/ || \
   fetch -o - http://pi.dk/3 ) > install.sh
$ sha1sum install.sh | grep 3374ec53bacb199b245af2dda86df6c9
12345678 3374ec53 bacb199b 245af2dd a86df6c9
$ md5sum install.sh | grep 029a9ac06e8b5bc6052eac57b2c3c9ca
029a9ac0 6e8b5bc6 052eac57 b2c3c9ca
$ sha512sum install.sh | grep f517006d9897747bed8a4694b1acba1b
40f53af6 9e20dae5 713ba06c f517006d 9897747b ed8a4694 b1acba1b 1464beb4
60055629 3f2356f3 3e9c4e3c 76e3f3af a9db4b32 bd33322b 975696fc e6b23cfb
$ bash install.sh

Если вам нужно переместить его на сервер, на котором не установлен GNU Parallel, попробуйте parallel --embed .

13
ответ дан 23 November 2019 в 22:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: