必要になって調べたので、メモメモ。

以下の例では、hoge.txt のタイムスタンプを変えずに UTF-8 に変換している。

#!/bin/sh

FILE=hoge.txt
TIMESTAMP=`ls -d -l --time-style=full-iso $FILE | awk '{print $6 " " $7 }'`
echo $FILE
mv $FILE ${FILE}.bak
nkf -w ${FILE}.bak > $FILE
rm ${FILE}.bak
touch -d "$TIMESTAMP" $FILE