web-dev-qa-db-ja.com

各ファイルにテキストを追加するシェルスクリプト?

テキストファイルでいっぱいのフォルダーがあります。それぞれに同じテキストブロックを追加する必要があります(もちろん、元のファイルを上書きします)。

このための正しいBashシェル構文はどうなるのだろうと思っていました。猫を使いますか?

バッチスクリプトをいくつか実行しましたが、Bashの専門家ではありません。どんな提案も感謝します。

27
Steve

追加リダイレクトを使用します。

for f in *.txt
do
  cat footer >> "$f"
done

スクリプトを使用してこれを行う必要がある場合は、エコーを使用してリダイレクトを追加し、余分なテキストをファイルに取得できます。

FILES=pathto/*
for f in $FILES ; do
    echo "#extra text" >> $f
done
7
GreenMatt
sed -i.bak "$ a $(<file_block_of_text)" *.txt
1
kurumi

くるみの答えの変形:

sed -i.bak "\$aTEXTTOINSERT" *.txt

詳細については、 SED:最後の行に何かを挿入しますか? を参照してください。

0
Joe Corneli