複数ファイルの改行コードを変換する方法


複数ファイルの改行コードを一気に変換する方法を紹介します。
UNIX 系のシステムに telnet か ssh でログインできる場合に使用できます。
find コマンドと Perl を使用します。

CR+LF(Windows形式)を LF(UNIX形式)に変換

find . -name "*html" -type f -exec perl -npi.rbak -e 's@\r\n@\n@g' {} \;

「*html」の部分は「*cgi」や「*php」など、変換したい対象ファイルの拡張子に変更して下さい。

変換前ファイルは拡張子「.rbak」で保存されます。
変換後ファイルを確認してOKなら、以下のコマンドで削除できます。

find . -name "*.rbak" -type f -exec rm -f {} \;

LF(UNIX形式)をCR+LF(Windows形式) に変換

find . -name "*html" -type f -exec perl -npi.rbak -e 's@\n@\r\n@g' {} \;

CR+LF(Windows形式)をCR(Macintosh形式) に変換

find . -name "*html" -type f -exec perl -npi.rbak -e 's@\r\n@\r@g' {} \;

ファイルが混在している場合(CR+LF -> LF、CR -> LF)

ファイルによって改行コードが異なってしまっている場合は、以下のように変換前の設定「\r\n」に「?」を追加します。
「\r」または「\r\n」が「\n」に置換されます。

find . -name "*html" -type f -exec perl -npi.rbak -e 's@\r\n?@\n@g' {} \;