我试过了:
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,我会收到错误。
我该怎么做?
我有一个想法来运行循环来解压,但我不知道如何解决这个问题
答案 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/
。