ディレクトリ内のすべてのPHPスクリプトに対して静的HTMLファイルを生成しようとしています。
find . -name "*.php" -exec php {} > {}.html \;
しかし、すべての結果を{}.html
。ファイル名から「.php」を削除するには?
ベストアンサー1
これはより効率的で移植可能な方法でなければなりません。
find . -name "*.php" -exec sh -c \
'for i; do php "$i" > "$(dirname "$i")/$(basename "$i" .php).html"; done' sh {} +
あるいは、Stephane Chazelasのコメントのおかげで、より簡単で移植性が向上しました。
find . -name "*.php" -exec sh -c \
'for i do php "$i" > "${i%.*}.html"; done' sh {} +
後者はまた、Stephaneが指摘した奇妙なディレクトリ名の問題を解決します。