* bulk nkf [#f1614ebb]
改行コードを一括で置換する。
** 使い方 [#e9aab625]
引数に一括置換したいファイルのあるディレクトリを指定すると、/tmp/save以下に全ファイルのコピーができる。その際、テキストファイルの場合、nkfが実行される。
bulk-nkf.sh ./foo
ls /tmp/save/foo
subversionファイルは省いてあるので、必要であればrsyncで元のファイルを上書きすればよい。
rsync -avz /tmp/save/foo /home/user/foo
** 気になったこと [#p10bbcc9]
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