goo blog サービス終了のお知らせ 

パソコン悪戦苦闘記録

多数のテキストファイルの文字コード一括変換のシェルスクリプト

 多数のテキストファイルの文字コードを、一括で自動変換するシェルスクリプトを自作しました。

 こちらの記事をご覧ください。

 こちらの記事もご覧ください。



 完成したシェルスクリプトは、(すでに本ブログに掲載していますが)、次のとおりです。

複数ファイルの文字コード一括変換スクリプト
 #!/bin/bash
 for myf in ~/kiroku_mail/dai1/*.txt
 do 
  newf=$(basename ${myf}) 
  iconv -f iso-2022-jp -t UTF-8 ${myf} > ~/afterconv/${newf} 
 done 






 文字コード変換に用いたコマンドは、「iconv」です。
 このiconvは、複数のファイルの文字コード変換には対応しておらず、1個のファイルの変換しかできません。
 そのため、複数ファイルの文字コードを変換するには、繰り返し処理が必要となります。
 for文による繰り返し処理です。

 「for文」とは、指定した回数分、同じ処理を繰り返したいときに使用する構文のことです。
 その書式(構文)は、以下のとおりです。

 for (変数) in (リスト) 
 do 
   (繰り返し処理) 
 done 


 リストに指定された値は、1回の処理ごとに順次、変数に代入され、do と done の間に記述されている繰り返し処理が実行されます。
 しかも、変数に代入された値は、その繰り返し処理中で参照、利用もできます。


 リストの箇所には、半角スペース区切りの固定文字列を並べる方法のほかに、パス名展開も利用できます。
 上に掲載のシェルスクリプトにおいても、パス名展開を利用しています。
 「~/kiroku_mail/dai1/*.txt」の記述がそれです。

 すなわち、「~/kiroku_mail/dai1/」ディレクトリ内の「*.txt」がリストとなっています。
 これによって、同ディレクト内にあるすべてのテキストファイルが、リストとして記述されていることになります。
 その一つ一つのテキストファイルが変数myfに代入され、繰り返し処理の中で利用されています。
 ですから、上記ディレクト内のすべてのテキストファイルが処理対象となって、iconv(文字コード変換)されているわけです。


 for文は、VBAでも常用していたので、馴染みのある構文です。
 これからはVBAの知識は忘れて、どんどんシェルコマンド、シェルスクリプトの知識に入れ替えていきたいと思っています。





それでは、また次の記事で
goosyun
名前:
コメント:

※文字化け等の原因になりますので顔文字の投稿はお控えください。

コメント利用規約に同意の上コメント投稿を行ってください。

 

  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最近の「Ubuntu」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事