【Linux】複数ディレクトリ内のファイル拡張子の変更

現在、WEBサーバーとして、CORESERVERを利用しているのですが、将来的にはコストパフォーマンスにより他のサーバーに移転することも考えています。

移転先有力候補には、さくらインターネットがあるのですが、さくらでは、原則として.htmlファイルを.phpファイルとして動作させることができないことを、最近知りました。

標準では、以下の一文を.htaccessに記述すれば.htmlファイルでも.phpとして動かすことができます。

AddType application/x-httpd-php .html

さくらインターネットでは、この方法が使えないということです。

それならば、現在、開発中のサイトについては、すべて.phpファイルとして作成した方がよいかと思い開発サイトの拡張子の変更作業を行いました。

■拡張子変更の初歩

あるディレクトリ内のファイルの拡張子を変更(html→php)するには以下のコマンドを使います。

for i in *.html ; do mv $i ${i/\.html/\.php}; done

(なお、後半のドットの前はエスケープ(半角¥)しています。しなくてもよいかもしれませんが。)

ただし、これだとディレクトリが複数有る場合には対応が面倒です。

一括で複数ディレクトリ内のファイル拡張子を変更するには以下のコマンドを使います。

find . -type f -name "*.html" -print0 | 
while read -r -d '' file; 
do mv "$file" "${file%%.html}.php"; done

上記コマンドは実質一行で行います。

これで、ファイルの拡張子の変更はできたのですが、次に、ファイル内のリンクパスやアクション先の文字列の変更を行います。

つまり、ファイルテキスト内の、.htmlという文字列を.phpに変更します。

変更するには以下のコマンドを使います。

find */* | xargs perl -pi -e "s/\.html/\.php/g"

上記コマンドの注意点は、ドットをエスケープしてやることです。.はメタ文字なので、バックスラッシュでエスケープしてやります。半角の¥でエスケープします。

これでファイル内のテキストも変更できました。

ただし、確認するとなぜか.htaccess内の文字列が変更されていませんでした。仕方ないのでここは手作業で置換しました。

なお、お約束ですが、実行は自己責任で。作業前にはバックアップを取って置く事おをオススメします。

cp -r hogedir backdir

上記コマンドでhogedirのバックアップをbackdirとして作成できます。作業前にどうぞ。

以上です。

カテゴリー: UNIX/Linux, XREA/CORESERVER パーマリンク

コメントを残す

メールアドレスが公開されることはありません。