一个目录中有多个 .tar 文件。我正在尝试将它们全部提取出来。
以下命令有效
for a in $(ls -1 *.tar); do tar -xvf $a; done
但是当我尝试执行以下命令时,它会打印所有文件名但不执行任何操作。它不会提取 .tar 文件。
% tar -xvf *.tar
Solarized-Dark-Cyan-3.0.3.tar
Solarized-Dark-Green-3.0.3.tar
Solarized-Dark-Magenta-3.0.3.tar
Solarized-Dark-Orange-3.0.3.tar
Solarized-Dark-Red-3.0.3.tar
Solarized-Dark-Violet-3.0.3.tar
为什么会这样,因为unzip '*.zip'
它适用于多个 .zip 文件。
答案1
unzip
处理'*.zip'
-style 参数,tar
但不处理。可能有具有此功能的存档提取器,能够提取 tarball,但我不知道有任何。
您应该避免ls
为此使用:
for a in *.tar; do tar -xvf "$a"; done
tar -xvf *.tar
尝试从第一个 tarball 中提取第二个及更多 tarball,这通常不会执行任何操作。