|
发表于 2010-8-6 09:53:43
|
显示全部楼层
是ml里面的吧,我一般用一个脚本,某论坛里面(似乎是arch)扒出来的
- #!/bin/bash
- for archive in $*; do
- if [ -f $archive ] ; then
- case $archive in
- *.tar.bz2)
- time -p tar xvf $archive
- ;;
- *.tar.gz)
- time -p tar xvf $archive
- ;;
- *.bz2)
- time -p bunzip2 $archive
- ;;
- *.rar|*.RAR)
- time -p rar x $archive
- ;;
- *.gz)
- time -p gunzip $archive
- ;;
- *.tar)
- time -p tar xvf $archive
- ;;
- *.tbz2)
- time -p tar xvf $archive
- ;;
- *.tgz)
- time -p tar xvf $archive
- ;;
- *.zip | *.ZIP | *.jar)
- time -p unzip.pl $archive
- # time -p unzip $archive
- ;;
- *.Z)
- time -p uncompress $archive
- ;;
- *.7z)
- time -p 7z x $archive
- ;;
- *.xz)
- time -p xz -d $archive
- ;;
- *)
- echo "don't know how to extract '$archive'..."
- ;;
- esac
- else
- echo "'$archive' is not a valid file!"
- fi
复制代码
里面的unzip.pl可以解决中文乱码问题:- #!/usr/bin/perl
- use Archive::Zip;
- use Encode qw(decode encode);
- sub usage {
- print <<USAGE;
- USAGE: unzip.pl ZIPFILE [FROMCODE=utf-8 [TOCODE=utf-8]]
- USAGE
- exit;
- }
- usage unless -e $ARGV[0];
- $zip = Archive::Zip->new($ARGV[0]);
- $from = $ARGV[1] || 'utf-8';
- $to = $ARGV[2] || 'utf-8';
- for ($zip->memberNames()) {
- $member = $zip->memberNamed($_);
- $_ = encode($to, decode($from, $_));
- $zip->extractMember($member, $_);
- }
复制代码 |
|