我正在尝试创建一个脚本,从包含多种文件的档案中仅提取 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' `