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

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 (4116d)