看来我有问题了。我的当前目录中有一些不同的文件类型,我只想压缩.png文件。我从这个开始:
find -name "*.png" | tar -cvf backupp.tar
它不起作用,因为我没有指定哪些文件,所以看看其他人是如何做到的,我添加了 xargs:
find -name "*.png" | xargs tar -cvf backupp.tar
这次它确实起作用了,并且创建了 backupp.tar 文件,但问题就在这里。我似乎无法提取它。每当我输入:
tar -xvf backupp.tar
什么都没有发生。我尝试过更改 chmod 和 sudo,但没有任何让步。
那么,我是完全输入了错误的命令还是我错过了什么?
您的两种方法中的每一种都接近工作,但每种方法都有一个明显的问题。
在您的第一种方法中,您尝试将文件列表通过管道传输到
tar
. 如果您想tar
从标准输入读取文件列表,则必须使用-T
/--files-from
和-
选项,例如如需参考,请参阅官方文档:
注意:
-print0
和标志的使用--null
应确保这也处理包含空格的文件名。在您的第二种方法中,您尝试通过运行
tar
,xargs
但您使用的是“创建”选项(--create
/-c
)。如果xargs
在 for 循环中或在 for 循环中使用“create”选项,那么它将在每次迭代后覆盖存档。相反,请尝试使用“追加”选项(-a
/--append
)或“更新”选项(-u
/--update
),例如:这将在每次迭代后将文件附加到存档而不是覆盖它。
无论哪种方式,一旦完成,您可以使用“列表”选项 (
--list
/-t
) 查看存档的内容并验证一切是否按预期工作:您可以简单地使用通配符
或通过使用
find
该
-T
选项从 FILE 获取文件名,在本例中为 stdin-