ファイルを囲むPHPタグを追加する必要があります。を使用して簡単に追加できます
find . -exec echo "?>" >> '{}' \;
しかし、どのようにタグを追加でき<?phpますか?
ファイルを囲むPHPタグを追加する必要があります。を使用して簡単に追加できます
find . -exec echo "?>" >> '{}' \;
しかし、どのようにタグを追加でき<?phpますか?
回答:
まだコメントを残すことはできませんが、1つのステップですべてを行うには:
find . -type f -exec sed -i -e "1s/^/<?php /" -e "\$s/\$/ ?>/" {} \;
perl one-linerでそれを行うことができます:
perl -0777 -p -i -e "s/^/hey /g" testfile
-0777力ファイルズルズルモードは、そのファイル全体を1行として読まれます。-pループを有効にします。-iファイルのインプレース編集を有効にします。^行の始まりを示します。
$ cp testfile1 testfile; perl -0777 -p -i -e "s/^/hey /g" testfile; diff testfile testfile1
1c1
< hey asdf
---
> asdf
更新:コメントに示されているように、の-i.bak代わりにを使用してバックアップを自動生成することを選択できます-i。これにより、コマンドにエラーが発生した場合の安全性が向上します。への引数-i は、バックアップのサフィックスになります。
多数のファイルを更新する場合、コマンドを-i.backup${RANDOM}で実行し、すべてのファイルが正しく更新されたことを確認してから、その拡張子を持つすべてのファイルを削除できます。
-i接尾辞なしでフラグを使用することを推奨する場合、これはバックアップがないことを意味することを読者に警告してください。さらに数文字(-i.bak)の場合、ワンライナーにタイプミスが含まれている場合に備えてバックアップを取得します。-pそれ以外の場合は、かなり単純なタイプミス(たとえば、フラグを忘れる)が1日中台無しになります。
sedストリームの編集用-ファイルはストリームではありません。edまたはのような、この目的のためのプログラムを使用しexます。の-iオプションsedは移植性がないだけでなく、発生する可能性のあるシンボリックリンクもすべて切断します。これは、基本的に削除して再作成するためです。これは無意味です。
for file in foo bar baz; do
ed -s "${file}" << EOF
0a
<?php
.
w
EOF
done
edその目的で使用する方法がわかっている場合は、回答でこれを示してください。
ディレクトリ内のすべてのファイルの末尾に何かを追加するために書いたものの代替(bash):
for FNAME in *
do
echo "?>" >> $FNAME
done
私はあなたのfindワンライナーが好きですが:)
$FNAMEあるべき$fname-慣例により、私たちは環境変数(PAGER、EDITOR、SHELL、...)と内部シェル変数を大文字(BASH_VERSION、RANDOM、...)。他のすべての変数名には、少なくとも1つの小文字を含める必要があります。この規則により、環境変数および内部変数が誤ってオーバーライドされるのを防ぎます。