“tar -xzf”用于目录中的许多“tar.gz”文件

1 bash shell tar

我在一个目录中有很多文件。他们每个人的名字都非常不同:

one.tar.gz
juk.tar.gz
cv.tar.gz
erf.tar.gz
vcx.tar.gz
cxcd.tar.gz
vc.tar.gz
jkjk.tar.gz
zxc.tar.gz
asd.tar.gz
ghj.tar.gz
kll.tar.gz
qwe.tar.gz
Run Code Online (Sandbox Code Playgroud)

一一提取非常耗时。所以我想使用一个命令提取所有这些文件。我试过tar -xzf *但没有用

Lin*_*een 10

使用find魔力:

find . -maxdepth 1 -type f -iname '*.tar.gz' -exec tar xzf '{}' \;
Run Code Online (Sandbox Code Playgroud)

  • 我想包含 `-maxdepth 1` 以避免子目录中的 tarball 意外扩展。 (2认同)

小智 7

据预计不工作,因为tar -xzf *.tar.gz会在你的情况下,扩大tar -xzf one.tar.gz juk.tar.gz cv.tar.gz ...,这意味着用gunzip one.tar.gz并从中提取命名文件juk.tar.gzcv.tar.gz等等。这显然不是你想要的。

您必须对所有 tar.gz 文件执行循环才能提取它们。

例如:

for f in *.tar.gz ; do tar -xzf $f ; done
Run Code Online (Sandbox Code Playgroud)