フォルダ以下のファイルすべての改行コード(CR+LF)を LF に変換するプログラム
what
改行コードが CR+LF のものを LF に変換する。
Windowsで開発したソフトのコードの改行コードが CR+LF になっており、それを本番の Linux 環境で動かそうとすると、symtax error がおきて困ったので、すべて LF にするプログラムを作成を試みました。
Linuxコマンド tr を使ってみる
プログラム(shell)
rails_root_path=/path/to/rails/root sudo updatedb locate $rails_root_path | grep -v "/.svn" > rails_app_file_list exec 3< rails_app_file_list while read old_file 0<&3 do if [ -f $old_file ] then new_file=$old_file-new_file tr -d \\r <$old_file> $new_file rm -fr $old_file mv $new_file $old_file fi done exec 3<&-
たしかに、Railsアプリすべてのファイルに含まれる CR+LF は LF になります。
しかし、CR のみの改行コードがあった場合 削除されるだけなので、改行がなくなってしまうというところが、よろしくない・・・。
CR は絶対ない!という条件が条件になります。
あとで、改良しよう。。とりあえずさらす。
環境
Linux version 2.6.22.18-co-0.7.3 (hn@coLinux) (gcc version 4.1.2)
dos2unix
コメントにある、dos2unix を利用してみました。
CR+LF → LF は dos2unix の方が便利でした。
- dox2unix install
$ sudo apt-get install sysutils
- dos2unix を使ったプログラム
rails_root_path=/path/to/rails/root sudo updatedb locate $rails_root_path | grep -v "/.svn" > rails_app_file_list exec 3< rails_app_file_list while read rails_file 0<&3 do if [ -f $rails_file ] then dos2unix $rails_file fi done exec 3<&-
こんな便利なコマンドがあったなんて・・・。
nkf (CR+LF → LF, CR → LF 変換を同時にやる)
このエントリーの趣旨とは異なりますが、CR → LF もやりたいです。
これは、 nkf コマンドを使ってみました。
これだと、CR+LF → LF, CR → LF 変換を同時にやれます。
- プログラム
rails_root_path=/path/to/rails/root sudo updatedb locate $rails_root_path | grep -v "/.svn" | grep -v ".jpg" | grep -v ".jpeg" | grep -v ".gif" | grep -v ".png" | grep -v ".csv" | grep -v ".dat" > rails_app_file_list exec 3< rails_app_file_list while read old_file 0<&3 do if [ -f $old_file ] then new_file=$old_file-new_file nkf -Luw $old_file > $new_file rm -fr $old_file mv $new_file $old_file fi done exec 3<&-