两种方式 - 两种不同的结果

两种方式 - 两种不同的结果

我运行了两个不同的命令,每个命令都产生了不同的数字。有人能帮我找出原因吗?

find -type d -name *log* | du -hcs

find . -type d -name '*log*' -print0 | xargs -0 du -hcs

答案1

我确信反对者认为找出原因的方法是

曼杜
并想知道你为什么没有阅读手册。

讽刺的是,虽然这对于 BSD 来说确实如此,但在 Linux 发行版中,这并不是找出答案的方法,因为 GNU 手册页缺少一些相当基本的内容。Linux 用户必须运行

核心实用信息
查看包含一个非常重要的句子的文档。

这是 BSD 命令手册页的第二句(OpenBSD 中是第三句)du

因此,即使您的通配符(在您的命令中而不是在答案中给您的更正版本)在您的find命令中(可能)被错误地扩展,但这不会产生任何差异。 任何您的find命令写入其标准输出,它会被du命令完全忽略。

从手册中,明确说明了正在发生的事情,并结合了已经声明在该答案的第三点中,您应该可以清楚地看到为什么您看到的命令和更正后的命令之间的行为和结果不同。准备好自责吧。☺

进一步阅读

  • du. MacOS 10 手册页。Apple 公司。
  • duFreeBSD 9.2 手册页。 2012-11-04。
  • duNetBSD 6.1.3 手册页。 2006-09-24。
  • duOpenBSD 5.4 手册页。 2014-02-14。
  • duDragonFly BSD 3.7 手册页。 1994-04-01。

相关内容