티스토리 뷰

반응형

요즘은 왠만하면 압축 프로그램들이 유니코드를 지원하기 때문에 한글 윈도우에서 파일 이름이 한글로 돼 있는 파일을 압축하면, 파일 이름이 유니코드로 변환된다. 따라서 이를 일본어 윈도우나 리눅스 등에서 압축을 해제해도 온전한 파일 이름을 얻을 수 있다.

그런데, 글로벌 시대를 역행하는 일부 '구 버전' 압축 프로그램들은 유니코드 그런거 모른다. 덕분에 내려받은 압축 파일을 풀었을 때 파일 이름이 무참하게 깨져서 표시되는 경험들은 많이들 하고 있지 않은가.


이런 경우에는 압축관리자GUI가 아닌 터미널에서 압축을 풀면 됐었다. 예를 들면

unzip -oCP949 "한글이름파일이 들어간 압축파일.zip"

이런 식으로 말이지. 게다가 터미널에서는 파일 이름 앞쪽만 대충 쳐주고 tab 키를 치면 알아서 자동 완성해주니 큰 불편함이 있을리 없었다.

그런데, 우분투 9.10으로 넘어와서는 위의 저 옵션이 듣질 않는다. man페이지를 보니 아예 문자 인코딩에 관한 옵션이 없어진 듯 하다. 아, unzip마저도 이제 "파일 이름은 유니코드지~"라는 글로벌 마인드로 무장해 버렸구나.

그래서 구글링해보니, 우분투 한국 사용자 모임에 그 답이 올라와 있더라.

출처 : 우분투 한국 사용잠 모임(http://ubuntu.or.kr/viewtopic.php?f=18&p=44404)


당연히 오늘 팁도 터미널에서 한다.


1. 압축 파일용 패키지 설치

어느 분이 멋진 펄 스크립트를 하나 올려주셨다. 이 스크립트를 설치하기 위해서는 추가적인 패키지를 하나 설치해야 한다.

$sudo apt-get install libarchive-zip-perl

이름을 보아하니, 펄에서 zip 파일을 다룰 수 있도록 하는 것인 듯 하다.

2. 스크립트 작성

이제, 준비가 끝났으니 스크립트를 작성해 보자.

$sudo vi /usr/local/bin/kozip

vi 편집기에서 아래와 같이 입력한다. 입력하기 전에 먼저 a 키나 i 키를 눌러 입력한 문자를 삽입하는 모드로 변경한 다음 입력해야 한다.

#!/usr/bin/perl
use strict;
use Encode;
use Archive::Zip;
my $zip = Archive::Zip->new();
$zip->read($ARGV[0]) == 0 or
   die "$0: couldn't read $ARGV[0]\n";
foreach my $mref ($zip->members) {
    my $n = decode("cp949",$mref->fileName);
    print "Extracting $n\n";
    $zip->extractMember($mref,$n) == 0 or
   die "$0: couldn't extract $n\n";
}

입력이 모두 끝났으면 esc 키를 누르고 ZZ(shift누른 상태에서 z키 두 번)눌러서 저장한다.\

3. 실행준비

이제 kozip 이라는 스크립트를 실행하기 위해 준비해보자.

$sudo chmod 755 /usr/local/bin/kozip

준비 끝. 한글이름 파일이 깨져나오는 압축 파일은 kozip [압축파일] 이라고 입력하면 압축을 제대로 풀 수 있다.



반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함