![使用通配符提取 tar 存档中的特定文件](https://linux22.com/image/1338401/%E4%BD%BF%E7%94%A8%E9%80%9A%E9%85%8D%E7%AC%A6%E6%8F%90%E5%8F%96%20tar%20%E5%AD%98%E6%A1%A3%E4%B8%AD%E7%9A%84%E7%89%B9%E5%AE%9A%E6%96%87%E4%BB%B6.png)
我正在尝试创建一个脚本,从包含多种文件的档案中仅提取 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' `