9.04 까지만해도
unzip 명령어에 -O 라는게 있어서
unzip -O cp949 파일명
이런식으로 한글파일도 깔끔하게 풀수있었다 ..
근데 9.10에서는 이게 사라졌다!!..(그냥은 안된다 뭐 옵션줘서 컴파일해야되는거로앎)
우분투 채널 보니까 스크립트를 만들어서 쓰더라 (인코딩변환후 리네임방법)
perl과 ruby 스크립트중
ruby가 맘에들어 ruby를 쓰기로했다.
#!/usr/bin/ruby # libzip-ruby1.8 패키지를 설치한 후 사용할 수 있습니다. # 사용법: $ ruby unzip_cp949_to_utf8 zipfile.zip require 'fileutils' require 'zip/zip' require 'zip/zipfilesystem' # ruby 1.8.x require 'iconv' def unzip Zip::ZipFile.open(ARGV[0]) do |zipfile| zipfile.each do |f| # libzip-ruby1.9 아직 없음. 그래서 아래 문장 주석 처리 #utf_string = f.name.encode("utf-8") # for ruby1.9 or higher # cp949 파일 이름을 utf-8로 변환 utf_string = Iconv.conv("UTF-8", "CP949", f.name) # for both ruby1.8.x and ruby1.9.x FileUtils.mkdir_p(File.dirname(utf_string)) zipfile.extract(f, utf_string) puts utf_string end end end unzip
unzip
그냥은 안된다 …
sudo apt-get install rubygems 로 루비 gem을 설치후
gem install zip/zip 으로 zip 라이브러리를 설치해준다
그다음에 네번쨋 줄쯤에 require rubygems 를 해주면 잘된다
삽질하고나서 읽어보니까 libzip-ruby 한방이면 되는거같기도하다 ;..(설명서를 읽자!)
http://ubuntu.or.kr/viewtopic.php?p=44412#p44412
Debian 8, ruby 2.1 에서는
sudo gem install zip iconv
가 필요
————————————-
업데이트
루비 2.1
#!/usr/bin/ruby require 'fileutils' require 'zip' def unzip Zip::File.open(ARGV[0]) { |zipfile| zipfile.each {|f| # cp949 파일 이름을 utf-8로 변환 utf_string = f.name.force_encoding("CP949").encode("UTF-8", :invalid => :replace, :undef => :replace, :replace => "_") # for ruby1.9 or higher FileUtils.mkdir_p(File.dirname(utf_string)) #zipfile.extract(f,utf_string) f.extract(utf_string) puts utf_string } } end unzip