BASH: Додавання існуючого файлу до існуючого файлу


3

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

linux  bash  find  eof 

Відповіді:


4

Перенаправлення не відбувається для кожного файлу (це складно). Обхідний шлях - це створення нового оболонки для кожного файлу:

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

The - необхідний, оскільки він стає нульовим ( $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

Не, filecontent до кожного prefs.js файл
Fredrik Pihl

@Fredrik виправлено.
Eroen

0

Він працює, щоб написати невеликий скрипт оболонки cbd.sh

#!/bin/bash

echo "filecontent" >> "$1"

Звичайно, ви можете замінити ехо

cat "somefile"

і дзвонити

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

в тому ж каталозі.

Синтаксис команди find з -exec є справжнім монстром.


1
"Синтаксис команди find з -exec є справжнім монстром." Погодьтеся!

0

Як на рахунок

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

Це передбачається filecontent є файлом, що містить те, що потрібно додати до prefs.js файлів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.