如何从标准输入构建 tar?
如何将信息通过管道传输到 tar
中并指定文件名?
How can I pipe information into tar
specifying the names of the file?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
如何将信息通过管道传输到 tar
中并指定文件名?
How can I pipe information into tar
specifying the names of the file?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(7)
例如:
但请记住,这不适用于所有可能的文件名;您应该考虑使用
--null
选项并从find -print0
提供tar
。 (xargs
示例对于大型文件列表不太适用,因为它会生成多个tar
命令。)Something like:
But keep in mind that this won't work for all possible filenames; you should consider the
--null
option and feedtar
fromfind -print0
. (Thexargs
example won't quite work for large file lists because it will spawn multipletar
commands.)正如 geekosaur 已经指出的那样,不需要将
find
的输出通过管道传输到xargs
,因为可以通过管道传输find
的输出使用find ... -print0 | 直接到
。tar
tar --null ...但请注意,
gnutar
和bsdtar
在排除存档文件方面存在细微差别。As already pointed out by geekosaur, there is no need to pipe the output of
find
toxargs
because it is possible to pipe the output offind
directly totar
usingfind ... -print0 | tar --null ...
.Note the slight differences between
gnutar
andbsdtar
in excluding the archive file though.扩展 geekosaur 答案:
您可以将 stdin 与
-T
选项一起使用。请注意,如果您使用某些条件(例如
-name
选项)过滤文件,通常您需要在管道中排除目录,否则tar将处理其所有内容,即不是你想要的。因此,使用:如果不使用
-type
,则将添加与“mypattern”
匹配的目录的所有内容!Extending geekosaur answer:
You can use stdin with the
-T
option.Note that if you filter files using some condition (e.g.
-name
option) in general you need to exclude directories in the pipe, otherwise tar will process all their content, that is not what you want. So, use:If you don't use
-type
, all the content of directories matching"mypattern"
will be added !您可以使用反引号代替管道,例如:
您可以放置任何其他命令来生成归档文件所需的列表,而不是
ls -1 *
Instead of using pipe you could use backticks, e.g.:
Instead of
ls -1 *
you can put any other command which produces list of needed to archive filestar
程序已通过多种方式实现。例如,在 IBM 的 Unix 版本上,AIX、tar
使用-L
选项而不是-T
,并且需要一个文件而不是允许-
来指示标准输入:The
tar
program has been implemented in a variety of ways. For example, on IBM's version of Unix, AIX,tar
uses the-L
option rather than-T
, and requires a file rather than allowing-
to indicate stdin:在 WINDOWS 上您必须以不同的方式使用它。请勿使用
z
参数,因为它会导致“无法将存档添加到自身” 错误。此外,如果您在 Zip 文件名中不使用“.tar”(使用z
时)参数,tar.exe 会在 zip 文件内创建一个无扩展名的文件,这对于大多数人来说毫无用处人们。而且,我认为大多数人想要一个包含文件的 zip 文件,而不是包含 tar 的 zip 文件。这也是不使用
z
参数的原因。不过我谈论的是在 Windows 中使用 tar,我不熟悉 Linux,可能那里有所不同。因此,在 Windows 中:要在目录内创建 ZIP 文件,并在该目录中包含特定文件,请使用:
要在目录内创建 ZIP 文件,并在该目录中使用通配符作为文件,请使用:
要让您查看压缩文件,请添加之间的
v
参数。示例:或
要在目录内创建 ZIP 文件(包含该目录中的所有文件),请使用:
(诀窍是 --exclude 位于开头)
最后,我不知道你为什么要使用它,但如果你想使用
z
,命令将是:Just try it out
You have to use it different on WINDOWS. Do not use the
z
parameter because it causes the "Can't add archive to itself" error. In addition, if you dont use the ".tar" in the Zip file name (when usingz
) parameter, tar.exe will create a extensionless file inside the zip file, which is quite useless for most people.And, i think most people want a single zip file with the files in it, not a zip file with a tar in it. So thats also a reasion not using the
z
parameter. However i talk about using tar in Windows, im not familar Linux, may it's different there. So in Windows:To create a ZIP File inside a directory, with specific files in that directory, use:
To create a ZIP File inside a directory, with wildcard for files in that directory, use:
To let you view the zipped files, add the
v
parameter in between. Examples:or
To create a ZIP File inside a directory, with all files in that directory, use:
(the trick is that --exclude is at the beginning)
Finally, i dont know why you want to use it, but if you want using
z
the command would be:Just try it out