如何使用shell脚本解压所有.tar.gz?

时间:2010-11-24 03:14:27

标签: linux shell tar

我试过了:

DIR=/path/tar/*.gz

if [ "$(ls -A $DIR 2> /dev/null)" == "" ]; then
  echo "not gz"
else
  tar -zxvf /path/tar/*.gz -C /path/tar
fi

如果文件夹有一个tar,它就可以了。如果文件夹有很多tar,我会收到错误。

我该怎么做?

我有一个想法来运行循环来解压,但我不知道如何解决这个问题

3 个答案:

答案 0 :(得分:25)

for f in *.tar.gz
do
  tar zxvf "$f" -C /path/tar
done

答案 1 :(得分:12)

我发现find exec语法非常有用:

find . -name '*.tar.gz' -exec tar -xzvf {} \;

{}被替换为找到的每个文件并执行该行。

答案 2 :(得分:3)

for a in /path/tar/*.gz
do
    tar -xzvf "$a" -C /path/tar
done

备注

  • 这假定以.gz结尾的文件是gzip压缩文件。通常.tgz.tar.gz用于表示,但如果出现问题,tar将会失败。
  • 您可能会先发现cd /path/tar更容易,然后您可以从untar命令中删除-C /path/tar,并在循环中删除/path/tar/
相关问题