【问题标题】:Why doesn't Linux GNU find -size match du or ls -l?为什么 Linux GNU 找不到 -size 匹配 du 或 ls -l?
【发布时间】:2016-09-30 22:28:29
【问题描述】:

在今天通过 SSH 在 UNIX 环境中工作时,我的同事偶然发现了 GNU findutils 中与 -size 标志相关的一个表面上的特性。

当我运行 ls -l 命令时,它告诉我文件大小为 155 字节。但是运行 find ~/ -size -1K 不会返回任何结果。它只匹配正好 1k 的文件。

此外,我知道它没有使用 du 结果来查找文件,因为 du 为同一个文件返回 4k。是什么赋予了?如果要信任 du ,似乎以 4k“块”提供内存,并且 ls -l 找到文件的“真实”大小,但 find 产生的结果与预期完全不同。任何帮助将不胜感激,我确信过去其他人也曾遇到过这种情况,但我终其一生都无法在任何地方找到结果。

谢谢!

【问题讨论】:

  • -1k 表示“小于一个大小为 1024 字节的块”,find 理解为“大小为 1024 字节的零块”,即 0 字节。 find 似乎使用整数进行块计数。你可能想要-size -1024c。
  • 这个问题真的是给Unix & Linux的。

标签: linux unix memory gnu gnu-findutils


【解决方案1】:

根据this manual page大写K不支持大小后缀。使用小写的k 表示千字节。你可能得到了1,它相当于1b,即一个512字节的块。当然,应该包含一个 155 字节的文件,所以有点混乱。

【讨论】:

  • 提到了破折号,寻找“数值参数可以指定为”的词。
猜你喜欢
  • 2015-02-05
  • 2016-11-15
  • 2013-07-04
  • 1970-01-01
  • 1970-01-01
  • 2017-04-06
  • 1970-01-01
  • 1970-01-01
  • 2010-10-03
相关资源
最近更新 更多