⇒ こちらの記事をご覧ください。
⇒ こちらの記事もご覧ください。
完成したシェルスクリプトは、(すでに本ブログに掲載していますが)、次のとおりです。
■複数ファイルの文字コード一括変換スクリプト
#!/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 ■■■■