BashFAQ/056は、あなたが試したことがうまくいかない理由をうまく説明しています。見てください。
(エラーによると)bashを使用しているため、for
コマンドはあなたの友達です。
for filename in *.php; do
echo "text" >> "$filename"
done
ファイルから「テキスト」を取得したい場合は、代わりに次のようにすることができます。
for filename in *.php; do
cat /path/to/sourcefile >> "$filename"
done
さて...サブディレクトリにファイルがあるかもしれません。その場合は、find
コマンドを使用してそれらを見つけて処理できます。
find . -name "*.php" -type f -exec sh -c "cat /path/to/sourcefile >> {}" \;
このコマンドは、や などのfind
条件を使用してファイルを識別し、前の "for" ループで示したのと基本的に同じことを実行します。最後は、これがオプションへの引数の終わりであることを示します。-name
-type
-exec
\;
find
-exec
man find
これについては、さらに多くの詳細を確認できます。
コマンドは移植可能であり、find
特にソリューションを他のシステムに移植したい場合は、この種のアクティビティに一般的に推奨されます。ただし、現在 を使用しているためbash
、bash のglobstar
オプションを使用してサブディレクトリを処理することもできます。
shopt -s globstar
for filename in **/*.php; do
cat /path/to/sourcefile >> "$filename"
done
man bash
詳細については、「globstar」で検索してください。このオプションには、bash バージョン 4 以降が必要です。
注:あなたがしていることに他の問題があるかもしれません。PHP スクリプトはで終わる必要はない?>
ため、スクリプトが PHP コードとして解釈しようとする HTML を追加している可能性があります。