bulk nkf

改行コードを一括で置換する。

使い方

引数に一括置換したいファイルのあるディレクトリを指定すると、/tmp/save以下に全ファイルのコピーができる。その際、テキストファイルの場合、nkfが実行される。

 bulk-nkf.sh ./foo
 ls /tmp/save/foo

subversionファイルは省いてあるので、必要であればrsyncで元のファイルを上書きすればよい。

 rsync -avz /tmp/save/foo /home/user/foo

気になったこと

nkfコマンドはDOSの改行コードのファイルを読むときに文字コードの判定を失敗するようだ。nkf -E -eで文字コードを明示してあげた。

 #!/bin/sh
 
 save_dir=/tmp/save
 
 target_dir=$1
 if [ ! -d "$target_dir" ]; then
     echo "error: no such directory: $target_dir"
     exit 1
 fi
 
 if [ -e $save_dir ]; then
     rm -rf $save_dir
 fi
 mkdir $save_dir
 
 files=`find $target_dir -type f ! -path '*svn*'`
 for f in $files; do
     d=`dirname $f`
     if [ ! -e $save_dir/$d ]; then
         mkdir -p $save_dir/$d
     fi
     is_text=
     if file $f | grep "text" >/dev/null; then
         is_text=1
     fi
     if [ "$is_text" ]; then
         nkf -E -e -d $f > $save_dir/$f
     else
         cp $f $save_dir/$f
     fi
 done

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS

Last-modified: 2007-01-11 (木) 19:08:53