Home > Perl > 半角カタカナのファイルを全角に変換

半角カタカナのファイルを全角に変換

  • 2008-02-01 (金) 13:52
  • Perl

SAMBA2系はUTF-8に対応していますが、Linuxカーネル側なのかSAMBA側なのか半角カタカナが表示(ブラウジング)できない場合があります (Fedora + SAMBA3 では特に問題ないように思えますが)。MACもUTF-8 での SMBプロトコルを認識するようになりましたし、どうしてもという場合は、smb.conf の coding system = UTF8 にして、ファイルをUTF-8に変換してあげましょう。

そして、既存の半角カタカナファイル名を全角カタカナのファイル名に変更して、半角カタカナ禁止運用でいきましょう。

言語: Perl
概要: カレントディレクトリ以下のファイル名およびフォルダ名の半角カタカナを全角カタカナに変換(任意のディレクトリを指定することもできる)
注意: メッセージが出なくなるまで実行させる

#!/usr/bin/perl -w

use strict;
use utf8;
use Unicode::Japanese;

my $d;

if(!@ARGV){$d=".";}else{$d=$ARGV[0];}
&StrConv($d);

sub StrConv{
  my($dir) = @_;
  my(@f,$fo,$new);

  opendir(IN,$dir);
    @f=readdir IN;
  close IN;

  foreach(@f){
    if(/^[^.]/) {
      $fo = $_;
      $new = Unicode::Japanese->new($fo)->h2zKana->get;
      if($fo ne $new) {
         rename "$dir/$fo","$dir/$new";
         print "Cange: $dir/$fo -> $dir/$newn";
      }
      if( -d "$dir/$_" ){
        &StrConv("$dir/$_");
      }
    }
  }
}

Comments:2

wakakumo 08-02-24 (日) 19:44

半角全角変換スクリプトを探していてたどり着きました。スクリプトをそのまま使わせていただきました。

が、26行目の
> print “Cange: $dir/$fo -> $dir/$newn”;
というところが、new“n”とnがひとつ余計についていて、エラーが出ました。それ以外は問題なく動きました。

ゲスト 09-08-19 (水) 18:23

&StrConv(”$dir/$_”); は
&StrConv(”$dir/$new”); でないと、フォルダ名に半角カナがあった場合に再帰しないですね。

Comment Form
Remember personal info

Trackback+Pingback:0

TrackBack URL for this entry
http://blog.ispace.co.jp/124/trackback/
Listed below are links to weblogs that reference
半角カタカナのファイルを全角に変換 from おまかせブログ2.0

Home > Perl > 半角カタカナのファイルを全角に変換

おまかせSearch
おまかせブログ 人気記事
おまかせFeeds
おまかせブログ Meta
おまかせLinks
おまかせPR
CoRichブログランキング
ブログランキング
blogram投票ボタン
This Page Counter: 9,576

Page Top