Learning Bash: добавить строку в список файлов - PullRequest
2 голосов
/ 03 апреля 2012

У меня есть список файлов, к которым я хочу добавить строку в конец файла.Я не могу найти правильный способ сделать это:

find . | grep filexxx | xargs << echo "attribute=0000"

Кажется, не работает, к сожалению.Без написания скрипта, какая команда oneliner сделает это?

спасибо!

Ответы [ 3 ]

8 голосов
/ 03 апреля 2012

Вы можете использовать опцию поиска: -exec, как это:

find . -type f -name "file*" -exec bash -c 'echo "your line" >> $1' -- {} \;

вам нужно изменить файл *, чтобы он соответствовал файлам, которые вы ищете.

Существует также другая возможность:

find . -type f | while read file; do echo "your line" >> $file ; done

вы можете найти команду grep или использовать имя в указанном выше

редактирование:

как предложено knittl в комментариях, у вас могут возникнуть проблемы с указанным выше одним вкладышем, если ваше имя файла содержит символ новой строки .. и решение, предоставленное Gordon :

find . -type f -print0 | while IFS= read -r -d '' file; do ...
6 голосов
/ 03 апреля 2012

Или используйте простой цикл:

for f in *txt; do echo "yada" >> "${f}"; done
0 голосов
/ 03 апреля 2012

Есть много способов сделать это.Ответ мудрого - один.Вот еще один, возможно, более интуитивный, даже если он порождает больше процессов:

for fname in $(find . | grep filexxx) ; do echo "attribute=0000" >> $fname ; done
...