使用通配符提取 tar 存档中的特定文件

Adr*_*sbe 25 linux unix tar

我正在尝试创建一个脚本,以从包含多种文件的存档中仅提取 jpeg 图片。

为此,我尝试使用:

   tar -xf MyTar.tar *.jpg
Run Code Online (Sandbox Code Playgroud)

但它失败了(找不到*.jpg)并建议我使用“--wildcard”。所以我试过了

tar -xf MyTar.tar --wildcard *.jpg
Run Code Online (Sandbox Code Playgroud)

我这样做了,但是同样的错误和不同的警告对我说选项“--wildcard”不明确。

我已经浏览了 tar 的手册页,但没有找到有关该问题的线索。

Adr*_*sbe 50

最后,我找到了休息好后的答案。选项是通配符s,复数...

所以命令

tar -xf MyTar.tar --wildcards "*.jpg"
Run Code Online (Sandbox Code Playgroud)

正是我所需要的。


Nic*_*ton 5

像这样在通配符周围加上引号,"*.jpg"这样 shell 就不会尝试扩展它,而是直接将其传递到 tar。您希望 tar 评估通配符,而不是 shell 和引号来执行此操作。