Я должен добавить содержимое файла в конец каждого файла prefs.js
.
Попробовал с помощью команды find -name 'prefs.js' -exec more filecontent >> '{}' \;
но это не сработало.
5 ответов
Перенаправление не происходит для каждого файла (это сложно). Обходной путь - создать новую оболочку для каждого файла:
find -name 'prefs.js' -exec sh -c 'cat filecontent >> $1;' - '{}' \;
-
необходим, так как он становится нулевым ($0
) аргументом для sh
Кроме того, вы должны использовать cat
а не больше. More - это пейджер, который позволяет пользователям пролистывать документ.
Используйте xargs:
find -name 'prefs.js' | xargs -n1 bash -c 'cat content_to_be_added >> $1;' -
for f in `find -name 'prefs.js'`
do
echo $f
#cat $f >> outfile
cat infile >> "$f"
done
Это работает, чтобы написать небольшой скрипт оболочки cbd.sh
#!/bin/bash
echo "filecontent" >> "$1"
конечно, вы можете заменить эхо с
cat "somefile"
и позвонить
find -name 'cbd[0-9].txt' -exec ./cbd.sh '{}' \;
в том же каталоге.
Синтаксис команды find с ее -exec - настоящий монстр.
Как насчет
find -name 'prefs.js' -exec dd if=filecontent conv=notrunc oflag=append of='{}' \;
Предполагается, что filecontent
- это файл, содержащий то, что вы хотите добавить к файлам prefs.js
.