人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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

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

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

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


●質問者: pinkymonk
●カテゴリ:コンピュータ インターネット
✍キーワード:CSV EUC JIS Linux PDF
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● b-wind
●27ポイント

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

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

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

という使い方です。

◎質問者からの返答

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

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


2 ● b-wind
●27ポイント

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

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

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

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

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


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

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

◎質問者からの返答

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


3 ● ttmmrr
●27ポイント

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

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

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

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

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


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

ls -1 | nkf -e

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ