如何用shell脚本解压所有的.tar.gz文件?

我试过这个:

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 

如果该文件夹有一个焦油,它的作品。 如果该文件夹有很多焦油,我得到一个错误。

我怎样才能做到这一点?

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

Solutions Collecting From Web of "如何用shell脚本解压所有的.tar.gz文件?"

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

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

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

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

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

笔记

  • 这假设以.gz结尾的文件是gzipped tar文件。 通常使用.tgz.tar.gz表示这个,但是如果有什么不对的话tar会失败。
  • 您可能会首先轻松地找到cd /path/tar ,然后可以从untar命令中删除-C /path/tar ,并在循环中删除/path/tar/