BASH: добавление существующего содержимого файла к существующему файлу

446

Я добавить содержимое в виде файла в конце каждого prefs.jsфайла. Попробовал, find -name 'prefs.js' -exec more filecontent >> '{}' \;но это не сработало.

3

5 ответов на вопрос

4
knittl

Перенаправление не происходит для каждого файла (это сложно). Обходной путь - создать новую оболочку для каждого файла:

find -name 'prefs.js' -exec sh -c 'cat filecontent >> $1;' - '{}' \; 

-Необходимо, так как она становится нулевой ( $0) аргументsh

Кроме того, вы должны использовать catвместо большего. More - это пейджер, который позволяет пользователям пролистывать документ.

1
Fredrik Pihl

Используйте xargs:

find -name 'prefs.js' | xargs -n1 bash -c 'cat content_to_be_added >> $1;' - 
1
aliva
for f in `find -name 'prefs.js'` do echo $f #cat $f >> outfile cat infile >> "$f" done 
Нет, `filecontent` должен быть добавлен в каждый файл` prefs.js` Fredrik Pihl 12 лет назад 0
@ Фредрик Исправил это. Eroen 12 лет назад 0
0
highsciguy

Это работает, чтобы написать небольшой скрипт оболочки cbd.sh

#!/bin/bash  echo "filecontent" >> "$1" 

конечно, вы можете заменить эхо с

cat "somefile" 

и позвонить

find -name 'cbd[0-9].txt' -exec ./cbd.sh '{}' \; 

в том же каталоге.

Синтаксис команды find с ее -exec - настоящий монстр.

«Синтаксис команды find с ее -exec - настоящий монстр». Согласен! 12 лет назад 1
0
Eroen

Как насчет

find -name 'prefs.js' -exec dd if=filecontent conv=notrunc oflag=append of='{}' \; 

Предполагается, filecontentчто это файл, содержащий то, что вы хотите добавить к prefs.jsфайлам.

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