Добавьте строку во многие файлы

Мне кажется, что радиосигнал является низким, но это не объясняет, почему wicd работает.

5
03.05.2012, 09:41
3 ответа

Оболочка расширяется >> % часть прежде xargs видит его.

Если необходимо сделать перенаправления оболочки, необходимо будет попробовать что-то вроде этого:

find . -name "*.txt" -exec sh -c '
    echo "hello world" >> "$0"
    ' {} \;

Как это работает:

  1. find замены {} с каждым файлом, которому это соответствует
  2. bash -c "some command" arg0... наборы $0... в "some command" сценарий

С другой стороны, Вы могли использовать команду такой как sed это не полагается >> например.

find . -name "*.txt" -exec sed -i -e '$a\
hello world' {} \;

Ссылки:

15
27.01.2020, 20:32
  • 1
    я не использовал бы столько новых строк, но да. –  Ignacio Vazquez-Abrams 03.05.2012, 06:41
  • 2
    Это команда sed добавит 'привет мир' после каждой строки. Вам нужно sed -i '$ahello world' помещать его только в конце файла (для моего тестирования с GNU sed не была нужна новая строка обратной косой черты), –  camh 03.05.2012, 06:57
  • 3
    Gah!Спасибо! Я подразумевал, что, но забыл $. :-) –  Mikel 03.05.2012, 06:59

С Параллелью GNU можно сделать:

find . -name *.txt -print | parallel 'echo "hello world" >> {}'

Можно установить Параллель GNU просто:

wget http://git.savannah.gnu.org/cgit/parallel.git/plain/src/parallel
chmod 755 parallel
cp parallel sem

Посмотрите вводные видео для Параллели GNU для узнавания больше: https://www.youtube.com/playlist? list=PL284C9FF2488BC6D1

0
27.01.2020, 20:32

Первоначальная команда, которую вы пробовали ....

find . -name *.txt -print | xargs -I % echo "hello world" >> %

нужно изменить на

find . -name "*.txt" | xargs -I {} sh -c "echo 'hello world' >> '{}' "
1
27.01.2020, 20:32

Теги

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