티스토리 뷰
요즘은 왠만하면 압축 프로그램들이 유니코드를 지원하기 때문에 한글 윈도우에서 파일 이름이 한글로 돼 있는 파일을 압축하면, 파일 이름이 유니코드로 변환된다. 따라서 이를 일본어 윈도우나 리눅스 등에서 압축을 해제해도 온전한 파일 이름을 얻을 수 있다.
그런데, 글로벌 시대를 역행하는 일부 '구 버전' 압축 프로그램들은 유니코드 그런거 모른다. 덕분에 내려받은 압축 파일을 풀었을 때 파일 이름이 무참하게 깨져서 표시되는 경험들은 많이들 하고 있지 않은가.
이런 경우에는 압축관리자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 [압축파일] 이라고 입력하면 압축을 제대로 풀 수 있다.
'고대지식' 카테고리의 다른 글
[우분투리눅스] NTFS 파티션 크기를 줄일 수 없을 때 (0) | 2009.12.04 |
---|---|
[우분투리눅스] 디스크 공간이 갑자기 부족하다고 나올 때 (1) | 2009.12.04 |
[우분투 리눅스] 리눅스 9.10에서 구글 크롬 브라우저 업데이트 (0) | 2009.11.23 |
IIS 서버 로그 형식 (0) | 2009.09.25 |
원격 데스크톱 연결에서 파일을 바로 끌어와 보자. (5) | 2009.09.25 |
- Total
- Today
- Yesterday
- ipython-notebook
- 사전
- Lambda
- 표준입력
- iterable
- 정렬키
- 함수형
- 튜플언패킹
- 리눅스
- mutability
- short_circuit
- 파이썬노트북
- globals()
- Python
- 우분투
- 파이썬
- 반복자
- locals()
- 파일입출력
- 단어 빈도수
- 복수기준정렬
- 이중리스트를 사용하지 않기
- 변경가능
- jupyter-notebook
- 리스트
- dict
- python list
- leapYear
- 정렬기준
- sorted
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |