ディレクトリをスキャンして*.phpという名前のファイルを探し、PHPプリプロセッサを使用して各ファイルを実行し、ファイルと同じ場所に、同じファイル名で、.phpではなく.html拡張子のみを使用して出力をキャプチャします。 。
これまでのところ:
find . -type f -name "*.php" | xargs -I {} php {} >> '{ dirname {}; basename {} .php; }'
このbashパズルにご協力いただきありがとうございます。
これが機能すると思います...
#!/bin/bash
FILES=/var/www/*.php
for f in $FILES
do
echo "Running script $f..."
php $f > $f.out
done
おそらく、php が存在する bin へのフル パスが必要です。
編集:
php $f > ${f%.php}.html
-exec
で直接使用したほうがよいでしょうfind
。xargs は、ファイルごとに何かを探しているときに、一括パラメーターを渡す必要がある場合に使用します。例えば
find ... -exec "php {} > $(basename {}).html;"
または似たようなもの。私が bash を使わなければならなくなってからしばらく経ちましたが、それはほぼ確実にうまくいかないでしょう。