Windows ã§äœæããã ZIP ã Linux ãšã Mac OS ã§è§£åãããšæååãããåé¡ã確å®ãªã®ã¯ Wine çµç±ã§ 7-Zip ãªã©ã® Windows çšã¢ãŒã«ã€ãã䜿ãããšãªãã ãã©ããWine ãã€ã³ã¹ããŒã«ã§ããªãããšããç¶æ³ã«çœ®ãããå Žåãæ³å®ããŠã¿ãã
unzip
ã 7z
ãªã©ã䜿ã£ãŠè§£åããå ŽåãLANG
ã®å€ã«ãã£ãŠå±éã®ããæ¹ãç°ãªãã®ã§ LANG=C
ãå¿ããã«èšå®ããŠãããããããã£ã¬ã¯ããªãæååãããŠãããšå°ãã®ã§èŠªãã£ã¬ã¯ããªãçšæããã
ïŒunzip
ã®å Žåãã¢ãŒã«ã€ãã«ãã£ãŠã¯ LANG=ja_JP.UTF-8
ã®ãšãã«æ£ããååã§è§£åã§ããããšãããã®ã§ LANG=C
ãæªåœ±é¿ãåãŒãããšãããïŒ
# unzip LANG=C unzip -d tmp ARCHIVE.zip # 7z LANG=C 7z x -otmp ARCHIVE.zip
ãã¡ã€ã«åã®ç¢ºèªã ãã§ããã°ã¢ãŒã«ã€ããªã¹ãã®åºåã iconv
ã§å€æããã ãã
LANG=C zipinfo ARCHIVE.zip | iconv -f CP932 -t UTF-8
å±éæžã¿ã®å Žå㯠find
ã®çµæã iconv
ã«æž¡ãã
find tmp | iconv -f CP932 -t UTF-8
ã§ãã¹ã¯ãªãããäœã£ãŠãã¡ã€ã«ããªããŒã ããŠããããšæã£ããã©ã¡ãã£ãšåé¡ããã£ãã
- æ¢ã« UTF-8 ãªæååã«
iconv -f CP932 -t UTF-8
ãããããšæŽã«æååããã find
ã®çµæãåçŽã«å©çšããããšãããšãã£ã¬ã¯ããªåãå€ãã£ãŠååž°çãªãªããŒã ãã§ããªããªã
åè
ã«ã€ããŠã¯ iconv -t UTF-8
ã®ããã«å
¥åã®ãšã³ã³ãŒãã£ã³ã°ãçç¥ãããš UTF-8 ã®å Žåã¯çµäºã³ãŒã 0
ãCP932 ã®å Žåã«ãšã©ãŒã«ãªãã®ã§ãããå©çšããã
åŸè
ã«ã€ããŠã¯ãã¡ã€ã«ãšãã£ã¬ã¯ããªãå¥ã
ã«åŠçããã°ããããã ãã©ã<CP932>/<CP932>/<CP932>.txt
ã®ããã«è€æ°ã®éå±€ã«æž¡ã£ãŠ CP932 ã«ãªã£ãŠãããšãã¡ã€ã«ããªããŒã ããããšãããšãã«ãã£ã¬ã¯ããªåãŸã§å€ãã£ãŠããŸããããã£ã¬ã¯ããªãç§»åããŠçžå¯Ÿãã¹ã§æžãæããªããŠã¯ãããªãããŸããäžå±€ãããªããŒã ããŠãããªããšããããŸããšã©ãŒã«ãªãïŒããã¯å¹žããLinux ã® find
ã¯éå±€é ã§è¡šç€ºããŠãããã®ã§ tac
ã䜿ã£ãŠéããŸã«ããã ãã§ããã¯ãïŒã
iconvert.sh
#!/bin/sh -e rename () for f do srcname=`basename "$f"` printf '%s' "$srcname" | iconv -t UTF-8 >/dev/null 2>&1 && continue || : dstname=`printf '%s' "$srcname" | iconv -f CP932 -t UTF-8` cd "`dirname "$f"`" mv -v "$srcname" "$dstname" done PREFIX=`cd "$1" && pwd` ### Replacing files ### ifs=$IFS IFS=' ' set -- `find "$PREFIX" -mindepth 1 ! -type d` IFS=$ifs rename "$@" ### Replacing directories ### ifs=$IFS IFS=' ' set -- `find "$PREFIX" -mindepth 1 -type d | tac` IFS=$ifs rename "$@"
ãã®ã¹ã¯ãªããã«èŠªãã£ã¬ã¯ããªãæž¡ãã
iconvert.sh tmp
--iconv
ã«å¯Ÿå¿ããŠãã rsync
ã§ã倿ã¯ã§ãããã©ã³ããŒã«ãªãããç¡é§ããªããèªåã§ã¹ã¯ãªãããæžãããã¯ç¢ºå®ã ãšã¯æããã©ã
rsync -av --iconv=sjis,utf-8 tmp/ dstdir/
Wine ã䜿ããªãç¶æ³ãæ³å®ããŠã¿ããã©ãã£ã±ã Wine ã䜿ãã®ã確å®ã ãšæã£ãã