重定向查找标准输出作为 tar 命令的参数

重定向查找标准输出作为 tar 命令的参数
$ find playground -name "file_a"  | tar cf - --files-from=- | gzip > playground.tgz

不明白为什么我们-同时使用cf -两者--files-from=-

不是已经-将所有标准输出重定向到tar cf了吗?

答案1

使用相同的-符号可能会令人困惑,但在每种情况下它都有不同的含义。

当与cf -,这意味着不是命名要写入的文件,tar 应该将存档写入标准输出:

如果使用“-”作为存档名称,tar 会从标准输入读取存档(列出或提取文件时),或将其写入标准输出(创建档案时)。

当与--files-from=-意味着获取要从给定文件名中提取或创建的名称, 和:

如果您给出一个破折号作为“--files-from”的文件名(即,您指定 --files-from=- 或 -T -),则文件名将从以下位置读取标准输入

(我强调阅读标准输入)。

相关内容