如何编写可以提取所有常见存档文件的bash函数?

时间:2018-01-14 14:45:24

标签: bash

我希望有一个可以提取zip,tar,tar.gz和其他档案的bash函数。

如何做到这一点?

2 个答案:

答案 0 :(得分:2)

很久以前我在互联网上找到了一个功能:

extract () {
    if [ -f "$1" ] ; then
        case $1 in
            *.tar.bz2)   tar xvjf "$1" ;;
            *.tar.gz)    tar xvzf "$1" ;;
            *.tar.xz)    tar xvJf "$1" ;;
            *.bz2)       bunzip2 "$1" ;;
            *.rar)       unrar x "$1" ;;
            *.gz)        gunzip "$1" ;;
            *.tar)       tar xvf "$1" ;;
            *.tbz2)      tar xvjf "$1" ;;
            *.tgz)       tar xvzf "$1" ;;
            *.zip)       unzip "$1" ;;
            *.jar)       unzip "$1" ;;
            *.Z)         uncompress "$1" ;;
            *.7z)        7z x "$1" ;;
            *)           echo "'$1' cannot be extracted via >extract<" ;;
        esac
    else
        echo "'$1' is not a valid file"
    fi
}

(我不确定谁是作者,所以我将这个答案作为社区维基)

答案 1 :(得分:0)

尝试atool http://www.nongnu.org/atool/ - atool是一个用于管理各种类型的文件存档的脚本(tar,tar + gzip,zip等)。