如何使用 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
如果文件夹有一个 tar,它就可以工作。如果该文件夹有很多 tar,我会收到错误。
我该怎么做?
我有一个想法运行循环来解压,但我不知道如何解决这个问题
I tried this:
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
If the folder has one tar, it works. If the folder has many tar, I get an error.
How can I do this?
I have an idea to run a loop to untar, but I don't know how to solve this problem
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我发现
find
exec 语法非常有用:find 。 -name '*.tar.gz' -exec tar -xzvf {} \;
{}
被找到的每个文件替换并执行该行。I find the
find
exec syntax very useful:find . -name '*.tar.gz' -exec tar -xzvf {} \;
{}
gets replaced with each file found and the line is executed.注释
.gz
结尾的文件是 gzip 压缩的 tar 文件。通常使用.tgz
或.tar.gz
来表示这一点,但是如果不这样做,tar
将失败正确的。cd /path/tar
更容易,然后您可以从untar命令中删除-C /path/tar
,然后删除/path /tar/
在循环中。Notes
.gz
are gzipped tar files. Usually.tgz
or.tar.gz
is used to signify this, howevertar
will fail if something is not right.cd /path/tar
first, then you can drop the-C /path/tar
from the untar command, and the/path/tar/
in the loop.接受的答案对我有用,稍作修改
我必须将正斜杠更改为反斜杠,然后它对我有用。
The accepted answer worked for me with a slight modification
I had to change the forward slash to a backslash and then it worked for me.