ディレクトリ内の特定の拡張子のファイルすべての文字エンコーディングを変換する

VineLinux上で作成したTeXのファイルをWinShellで編集する必要があるのだが、複数ファイルを個々に変換するのは面倒くさい。ので、一括でできる方法を探してみたところ、次の方法を見つけた。

find -name '*.tex' -print0 | xargs -0 nkf --overwrite -s -Lw

まずfindコマンドで.texで終わるファイル名の一覧をヌル文字区切りで出力する。
xargsは標準入力された内容を空白文字(-0のときはヌル文字)で区切って1つずつ指定されたコマンドに渡して実行するらしいので、ここではファイル名が1つずつ渡される。
nkfは--overwriteで入力ファイルに上書き、-sで出力の文字エンコーディングShift_JISに、-Lwで改行コードをCRLFにしている。
戻すときは

find -name '*.tex' -print0 | xargs -0 nkf --overwrite -e -Lu

かな。


自鯖で運営してるサイトもこないだリニューアルして、リニューアル(ページ構成を変えた)済みのアドレスでGoogleYahoo!で捕捉されるようになったし、今度からこういうネタはあっちに載せよう……。