[attachment=0:3ozw8amr]screenshot1.png[/attachment:3ozw8amr]
맥에 파일을 백업했다가
다시 가져오니 한글 파일명이 좀 이상해졌네요…
일괄 변경할 좋은 방법 없을까요?
[attachment=0:3ozw8amr]screenshot1.png[/attachment:3ozw8amr]
맥에 파일을 백업했다가
다시 가져오니 한글 파일명이 좀 이상해졌네요…
일괄 변경할 좋은 방법 없을까요?
사용법
ruby1.9.1 을 설치한 후 (apt-get install ruby1.9.1)
$ ruby1.9.1 nfc.rb testdir
이렇게 하면 testdir 내의 NFD(자소 분리된 형태) 파일 이름이
NFC(자소 조합된 형태) 파일 이름으로 일괄 변경됩니다.
(testdir 의 하위 디렉토리 내의 파일까지 일괄 변경)
디렉토리 이름은 변경되지 않으며 파일 이름만 변경됩니다.
파일 이름 nfc.rb
[code:28xym2wl]
#!/usr/bin/ruby1.9.1
SBase = 0xAC00
LBase = 0x1100
VBase = 0x1161
TBase = 0x11A7
LCount = 19
VCount = 21
TCount = 28
NCount = VCount * TCount # 588
SCount = LCount * NCount # 11172
def compose_hangeul source
len = source.length
return ‘’ if len.zero?
result = ‘’
last = source[0] # copy first char
result << last
for i in 1...len
ch = source[i]
# 1. check to see if two current characters are L and V
l_index = last.ord - LBase
if (0 <= l_index && l_index < LCount)
v_index = ch.ord - VBase
if (0 <= v_index && v_index < VCount)
# make syllable of form LV
last = [SBase + (l_index * VCount + v_index) * TCount].pack("U")
result[-1] = last # reset last
next # discard ch
end
end
# 2. check to see if two current characters are LV and T
s_index = last.ord - SBase
if (0 <= s_index && s_index < SCount && (s_index % TCount) == 0)
t_index = ch.ord - TBase
if (0 < t_index && t_index < TCount)
# make syllable of form LVT
last = [last.ord + t_index].pack("U")
result[-1] = last # reset last
next # discard ch
end
end
# if neither case was true, just add the character
last = ch
result << ch
end # for
return result
end
require ‘find’
Find.find(ARGV[0]) do |path|
if File.file? path
File.rename(path, compose_hangeul(path))
end
end
[/code:28xym2wl]
전문가의 해결 방법이군요…
루비… 알흠답네요… 감사합니다. ^^;
아직 안해봤지만 잘 되겠지요?
cogniti님 답변 감사드립니다.