我正在寻找一个名为 *.php 的文件的目录扫描,然后使用 PHP 预处理器执行每个文件,并将输出捕获到与文件相同的位置,具有相同的文件名,只有 .html 扩展名而不是 .php .
到目前为止,我有:
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
直接使用 in find
。xargs 适用于您需要传递批量参数时,同时您正在寻找更多每个文件的东西。例如
find ... -exec "php {} > $(basename {}).html;"
或类似的东西。自从我不得不使用 bash 以来已经有一段时间了,所以这几乎肯定不会起作用,但应该让你开始。