3

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

5 ответов5

4

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

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

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

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

1

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

find -name 'prefs.js' | xargs -n1 bash -c 'cat content_to_be_added >> $1;' -
1
for f in `find -name 'prefs.js'`
do
    echo $f
    #cat $f >> outfile
    cat infile >> "$f"
done
0

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

#!/bin/bash

echo "filecontent" >> "$1"

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

cat "somefile"

и позвонить

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

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

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

0

Как насчет

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .