シェルスクリプトについて教えてください。


文字コードがEUCで指定されているLinux上に文字コードShift-JISで作成された、PDFとCSVファイルがあります。

このファイル名をシェルで判断して条件に一致した場合のみ削除したいのですが、文字コードが違うためファイル名が読み込めません。

シェル内で読み取ったファイル名をShift-JISからEUCに変換して、該当の場合削除する。
としたいのですが、できなさそうです。

また、PDFをEUCに変換するとファイルが壊れてしまいます。

何かよい解決策はありませんでしょうか。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2006/11/02 09:35:32
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:b-wind No.1

回答回数3344ベストアンサー獲得回数440

ポイント27pt

nkf を使えば文字コードの変換は出来ます。

http://cns-guide.sfc.keio.ac.jp/2004/2/4/12.html

$ nkf -S -e < INPUT.sjis.txt > OUTPUT.euc.txt

という使い方です。

id:pinkymonk

NKFはファイルの内容の文字コードを変換してくれますがファイル名を変更するのは難しそうです。

追記としては、PERLかPHPでモジュールを作って実行させようかと考えています。

2006/10/27 09:07:27
id:b-wind No.2

回答回数3344ベストアンサー獲得回数440

ポイント27pt

正直前提条件がよく分からないのであまり自信がありませんが、

NKFはファイルの内容の文字コードを変換してくれますがファイル名を変更するのは難しそうです。

状況によっては使えます。

OLDFILENAME='aaaa'
NEWFILENAME="`echo $OLDFILENAME | nkf -S -e`"
mv OLDFINENAME NEWFILENAME

Shell にも依存するので確実ではないですが。


「ファイル名の変更」だけならそのものずばり convmv というコマンドもあります。

http://www.geocities.jp/code_air_edge/HP/convmv.html

id:pinkymonk

うわ。ありがとうございます!convmv試してみます!

2006/10/27 11:05:18
id:ttmmrr No.3

回答回数24ベストアンサー獲得回数1

ポイント27pt

http://www.ie.u-ryukyu.ac.jp/~kono/nkf/

主さんは「ファイル名」の文字コードを言っていて、

1さんは「ファイルの内容」の文字コードを言っているので、

主さんはnkfでは難しいと思ったんだと想像します。

2さんもそれを指摘してますが、主さんに伝わっていない気がします。


たとえば、ls -1 などすると、文字化けして見えるファイル名一覧も、

ls -1 | nkf -e

とすると、正しいファイル名を見ることができます。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません