シェルで改行の変換(Windows->Unix)

シェルと ls, mv, sed でWindowsな改行をUnixな改行に変換。

^M は vi 上でキーを Ctrl+v, Ctrl+m と押下。とりあえず .java, .properties, .xml, .txtを変換対象にしてる。ディレクトリを指定すると、そのディレクトリ内(含サブディレクトリ)ファイルに対して再帰的に処理を行う。

#!/bin/sh

function conv() {
  if [ -d "$1" ]; then
    cd "$1"
    for i in `ls -1`; do
      conv $i
    done
    cd .. # cd -
 else
   case $1 in
   *.java | *.properties | *.xml | *.txt)
     sed 's/^M/\n/g' < $1 > $1._tmp_
     mv $1._tmp_ $1
     ;;
   esac
 fi
}

[ $# -eq 0 ] && exit 1
[ ! -e $1 ] && exit 1

conv "$1"