tar -C,带有通配符文件模式

Modified on: Tue, 12 Feb 2019 01:00:03 +0800

我可以使用tar命令更改目录并使用通配符文件模式吗?

以下是我要做的事情:

tar -cf example.tar -C /path/to/file *.xml

如果我不更改目录(-C),它可以工作,但我正在尝试避免tar文件中的绝对路径。

tar -cf example.tar /path/to/file/*.xml

以下是我做过的其他一些尝试:

tar -cf example.tar -C /path/to/file *.xml
tar -cf example.tar -C /path/to/file/ *.xml
tar -cf example.tar -C /path/to/file/ ./*.xml
tar -cf example.tar -C /path/to/file "*.xml"

这是我得到的错误:

tar: *.xml: Cannot stat: No such file or directory

我知道还有其他方法可以使这项工作(使用find,xargs等),但我希望只使用tar命令。

有什么想法吗?

作者:Nick C.

最佳答案

问题是,* .xml由shell解释,而不是由tar解释。因此,它找到的xml文件(如果有)位于您运行tar命令的目录中。

您必须使用多阶段操作(可能涉及管道)来选择所需的文件,然后对其进行焦化。

最简单的方法就是将cd放到文件所在的目录中:

$ (cd /path/to/file && tar -cf /path/to/example.tar *.xml)

应该有用。

括号将命令组合在一起,因此当它们完成后,您仍将在原始目录中。和&&表示tar只有在初始cd成功时才会运行。

作者:Majenko

相关问答

添加新评论