“find -size 100k”使用千字节还是千比字节?

“find -size 100k”使用千字节还是千比字节?

我正在查看linux手册并且在本页,查找手册,特别是在有关测试“-size”的部分中,它(错误地)指出千字节是 1024字节。据我所知,这是错误的。一千字节是1000字节,和一个千字节是1024字节。那么,它是什么单位实际上使用?它是说“千字节”并表示“1000 字节”,还是表示“1024 字节”并错误地写成了“千字节”?

答案1

发现得好!明确的解释是正确的。 1k 表示千字节(1024 字节)。我通过创建一系列尺寸并查看哪些尺寸被识别来对其进行测试。

$ for i in 999 1000 1001 1023 1024 1025; do dd if=/dev/urandom of=$i bs=1 count=$i; done
$ find . -size 1k
.
./1024
./1023
./1001
./1000
./999

您可以看到找到了 1024 字节文件(而不是 1025 字节文件)。

(如果您愿意,您可以考虑提交错误报告。)

答案2

手册上您链接的页面已经过时且不正确。一在线页面此错误已被纠正的地方是:

-size n[cwbkMG]
文件使用 n 个单位的空间,向上舍入。可以使用以下后缀:
`b' 表示 512 字节块(如果不使用后缀,则这是默认值)
`c' 表示字节
`w' 表示两字节字
`k' 表示 Kibibytes(KiB,单位为 1024)字节)
‘M’ 代表 Mebibytes(MiB,单位为 1024 * 1024 = 1048576 字节)
‘G’ 代表 Gibibytes(GiB,单位为 1024 * 1024 * 1024 = 1073741824 字节)

BSD查找手册仍然不正确。

最新的手册位于man find更新的操作系统中。
从 GNU find 版本(find (GNU findutils) 4.7.0-git)开始,手册如下:

-size n[cwbkMG]
文件使用 n 个单位的空间,向上舍入。可以使用以下后缀:

`b' 表示 512 字节块(如果不使用后缀,则这是默认值)
`c' 表示字节
`w' 表示两字节字
`k' 表示 Kibibytes(KiB,1024 字节单位)
`M' 表示 Mebibytes (MiB,单位为 1024 * 1024 = 1048576 字节)
‘G’ 表示 Gibibytes(GiB,单位为 1024 * 1024 * 1024 = 1073741824 字节)

所以,这个问题在 find 的某些版本中已经得到解决。

相关内容