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

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

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

为此,我尝试使用:

   tar -xf MyTar.tar *.jpg

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

tar -xf MyTar.tar --wildcard *.jpg

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

我已经查看过 tar 的手册页,但没有找到有关该问题的任何线索。

答案1

最后,经过一番休息,我找到了答案。选项是通配符s,复数...

因此命令

tar -xf MyTar.tar --wildcards "*.jpg"

正是我需要的。

答案2

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

答案3

对于某些较旧版本的 tar,以下内容摘录自“man” 文件

文件名替换通配符不能用于从存档中提取文件。相反,请使用以下形式的命令:

tar xvf ... /dev/rmt/0 `tar tf ... /dev/rmt/0 | grep 'pattern' `

相关内容