“tar --directory”无效

时间:2011-11-07 21:38:27

标签: linux unix tar

我想创建一个文件的tarball,但不包括目录名。我知道还有另一种方法,但我想知道为什么这种方式不起作用。

如果我运行以下命令来创建由特定文件组成的tarball,那么它可以工作:

tar -vcf file.tar -C <PATH TO DIR> file1

但是,如果我在外卡上运行它以包含多个文件,则它会失败:

tar -vcf file.tar -C <PATH TO DIR> *

我收到一条错误消息,对于当前目录中的每个文件(不是-C中指定的目录),tar: <FILE>: Cannot stat: No such file or directory

任何想法为什么在外卡上运行上述命令与文件名的行为有所不同?

2 个答案:

答案 0 :(得分:4)

在调用*之前,shell会扩展tar通配符。 tar然后更改目录(因为你要求它),但是后来找不到shell当前目录中的文件。

当然,更改shell中的目录意味着您无法在原始当前目录中打开输出文件。因此,您必须将子输出重定向到子shell之外,如下所示:

(cd $DIR; tar -vc *) > file.tar

答案 1 :(得分:0)

您必须使用目录:

tar -vcf files.tar /path/to/directory

如果您的文件位于文件夹中,请使用.引用当前文件夹:

tar -vcf files.tar .