gallu’s blog

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

特定のディレクトリ以下のファイルの文字コードをUTF-8に全部変換したい時

いやなんかググって動かしたら割とあちこちコケたので、面倒なんで一回ちゃんと調べて、その辺を備忘録。
ごく大まかには
・findで対象を引っかけて
・xargsつかって
nkfに引き渡す
感じ。

find ./ -type f -name *.php | xargs -pL1 nkf -w -Lu --overwrite

で確認してから

find ./ -type f -name *.php | xargs -L1 nkf -w -Lu --overwrite

で一気。


以下、解説つけつつ。

find ./ -type f -name *.php

ここはまぁ毎度な気がするので省略。

| xargs -pL1

xargs は「コマンドの実行」。基本、標準入力で入ってきた各行に対して有効なんで、パイプ使って。
L1は「1行づつ処理」で、pは「実行するまえに確認」。
なので、実際に動かすときはp抜いて-L1にするほうが楽。

nkf -w -Lu --overwrite

対象ファイルはパイプで入ってくるので。
--overwriteで「ファイル上書き」、-wは「UTF-8に変換」、-Luは「改行コードをLF(UNIX系)に」ってなあたり。
それ以外が必要そうならnkf調べて適当に追加。