解压缩.tar.gz或.zip

学习长颈鹿

我正在编写脚本,其中文件中有.zip文件和.tar.gz文件。我必须解压缩文件。我知道如何将tar用于tar.gz,将unzip用于zip文件,但不知道如何根据扩展名做出决定。我写了一个适用于tar.gz的脚本。这是脚本。

#!/bin/bash
echo "Evaluate Lab"
select yn in "Yes" "No";
do
    case $yn in
    Yes )
        echo "Evaluating!!"
        #choose file
        file="$(ls | head -1)"
        echo $file

        mkdir temp
        echo "Decompressing file $file"
        #Decompress chosen tar.gz to temp
        tar -xf "$file" --directory temp

        cd temp/
        #Do some work here
        #get out of temp folder
        cd ../
        rm -rf temp
        echo "Moving $file to done"
        mv "$file" ../done/
        echo "Evaluate another"
        echo "1) Yes     2) No"
        ;;
    No )
        echo "Exiting...."
        exit;;
    *)
        echo "Enter right option";;
    esac
done

我必须同时处理tar.gz和zip。有什么提示吗?

库萨兰达

以下是您的脚本的一个变体:

#!/bin/sh

mkdir -p "done"

for file in ./*.tar.gz ./*.zip; do
    printf 'Press Enter to process %s, or Ctrl+C to quit\n' "$file"
    read bogus

    tmpdir=$(mktemp -d)

    printf 'Decompressing %s into %s\n' "$file" "$tmpdir"
    case $file in
        *.tar.gz) tar -xz -f "$file" -C "$tmpdir" ;;
        *.zip)    unzip      "$file" -d "$tmpdir" ;;
    esac

    (
        cd "$tmpdir"
        # do work here

    )

    rm -rf "$tmpdir"
    mv "$file" "done"
done

它遍历所有.tar.gz.zip文件在当前目录中。对于每个文件,使用创建一个临时提取目录,并使用取决于文件名后缀mktemp -d将文件提取到其中tarunzip

子外壳程序cd以及您对提取的数据需要执行的所有其他操作,使您可以将更改的目录跳回到开始时的位置(更改的工作目录是该子外壳程序的本地目录)。

我想这里的主要内容是case ... esac声明。这是一种根据字符串匹配的模式执行不同操作的方法。

也可以看看:

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TOP 榜单

热门标签

归档