2

我正在寻找一个名为 *.php 的文件的目录扫描,然后使用 PHP 预处理器执行每个文件,并将输出捕获到与文件相同的位置,具有相同的文件名,只有 .html 扩展名而不是 .php .

到目前为止,我有:

find . -type f -name "*.php" | xargs -I {} php {} >> '{ dirname {}; basename {} .php; }'

感谢您对这个 bash 拼图的帮助!

4

2 回答 2

1

认为这行得通...

#!/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
于 2012-09-20T21:41:28.450 回答
0

最好-exec直接使用 in find。xargs 适用于您需要传递批量参数时,同时您正在寻找更多每个文件的东西。例如

find ... -exec "php {} > $(basename {}).html;"

或类似的东西。自从我不得不使用 bash 以来已经有一段时间了,所以这几乎肯定不会起作用,但应该让你开始。

于 2012-09-20T21:42:31.910 回答