Unix 在要存档的目录的子目录中创建tar文件

Unix 在要存档的目录的子目录中创建tar文件,unix,tar,non-recursive,Unix,Tar,Non Recursive,我想创建一个目录中所有文件的tar文件,减去该目录中的子目录,然后将该tar文件放在子目录中的一个目录中。例如,我在/test中有几个.txt文件,在/test中还有另一个名为ArchivedFiles的目录。我想告诉tar命令归档所有的.txt文件,并将其放在/test/ArchivedFiles中。 我该怎么做呢 tar cf test/foo/test.tar -- `find test -maxdepth 1 -name '*.txt' -type f` 我想那应该是你想要的 由于您

我想创建一个目录中所有文件的tar文件,减去该目录中的子目录,然后将该tar文件放在子目录中的一个目录中。例如,我在/test中有几个.txt文件,在/test中还有另一个名为ArchivedFiles的目录。我想告诉tar命令归档所有的.txt文件,并将其放在/test/ArchivedFiles中。
我该怎么做呢

tar cf test/foo/test.tar -- `find test  -maxdepth 1 -name '*.txt' -type f`
我想那应该是你想要的

由于您的tar命令已过时,一个不起作用的选项是:

find test -maxdepth 1 -type f -name '*.txt' -print0 | tar -cf test/foo/test.tar --null --files-from -
您遇到问题,因此可以尝试以下命令:

tar cf test/foo/test.tar `find test  -maxdepth 1 -name '*.txt' -type f`
echo tar cf test/foo/test.tar `find test  -maxdepth 1 -name '*.txt' -type f`
tar c f test/foo/test.tar `find test  -maxdepth 1 -name '*.txt' -type f`
find test  -maxdepth 1 -name '*.txt' -type f
然后粘贴输出,这样我们就可以看到发生了什么

鉴于find也是一个非常传统的功能,让我们尝试以下功能:

tar cf test/foo/test.tar test/*.txt

以下命令将起作用。它会将任何子目录放入tar,但不会将这些子目录的内容放入tar。这意味着,如果你把焦油放进一个subdir,你就不必担心它会把自己放进去

例如,如果要将当前目录中的所有文件放入名为mytar.tar的tar文件,该文件位于名为d1的子目录中:

tar --no-recursion -cvf d1/mytar.tar *

这给了我:用法:tar{c|r|t|u|x}[bbddeffhillxmnopssuvw[0-9][Blocks][TarFile][InputList][ExcludeFile][Feet][Feet@Density]|[Blocksb][-C目录]文件…@Ben:哪个命令?还有,你使用的是什么版本的tar?@Ben:还有,你的.txt文件中有没有空格,或者是以-字符开头的?如果您运行的是第一个版本(可能是您最好的版本,因为您有这样一个旧版本的tar),那么如果您仍然有问题,请在命令前面加上echo,然后发布结果,这样我们就可以看到出了什么问题。选项1。如何检查我使用的版本?我相信它是旧版本。然而,我没有能力改变这一点。从用法消息来看,OP似乎使用了一个非常旧的(遗留)tar。不是GNU焦油与所有的花式选择。