[macOS General] File の mime-encoding を調べて変換する
コマンドラインでかんたんにすませたい。
Contents
file コマンドでエンコーディングを判別したが失敗した
file
コマンドで分かるらしいので調べてみる。
% file -bI *
text/plain; charset=unknown-8bit
text/plain; charset=unknown-8bit
ERROR: line 22: regexec error 17, (illegal byte sequence); charset=unknown-8bit
うまくいかない。
Sublime Text で開いて確認したところ、SHIFT_JIS
と表示されました。
iconv で変換してみる
JIS 関連の扱えるフォーマットを調べてみると、たくさん出てきた。。。
% iconv -l | grep JIS
ISO-IR-14 ISO646-JP JIS_C6220-1969-RO JP CSISO14JISC6220RO
JISX0201-1976 JIS_X0201 X0201 CSHALFWIDTHKATAKANA
ISO-IR-87 JIS0208 JIS_C6226-1983 JIS_X0208 JIS_X0208-1983 JIS_X0208-1990 X0208 CSISO87JISX0208
ISO-IR-159 JIS_X0212 JIS_X0212-1990 JIS_X0212.1990-0 X0212 CSISO159JISX02121990
MS_KANJI SHIFT-JIS SHIFT_JIS SJIS CSSHIFTJIS
EUC-JISX0213
SHIFT_JISX0213
こんな形で変換できました。
% iconv -f SHIFT_JIS -t UTF-8 06.csv > 06.utf8
nkf を使えば auto detect して convert してくれた
どうも nkf をつかえば、入力を自動判別してくれるよう。
homebrew でインストールする。
% brew install nkf
==> Downloading http://dl.sourceforge.jp/nkf/59912/nkf-2.1.3.tar.gz
######################################################################## 100.0%
==> make CC=clang
==> make install prefix=/usr/local/Cellar/nkf/2.1.3 MKDIR=mkdir -p
/usr/local/Cellar/nkf/2.1.3: 4 files, 348K, built in 7 seconds
実行します。
% nkf -w 06.csv > 06.utf8
xargs をつかって一括変換する
xargs をつかって、カレントディレクトリのファイルを一括で変換します。
% find . -name "*.csv" | xargs -n 10 nkf -w --overwrite
% file -bI *
text/plain; charset=utf-8
text/plain; charset=utf-8
ERROR: line 22: regexec error 17, (illegal byte sequence); charset=utf-8
楽できた!
補遺
file
コマンドで mime-type の判定まわりで、正規表現がらみのエラーが出るのだろうか?
無視してもよいのかな。
ERROR: line 22: regexec error 17, (illegal byte sequence); charset=utf-8