bao*_*han 8 defaults find history
该find命令允许您按大小搜索,您可以使用man页面中拼写的单位指定大小:
File uses n units of space. The following suffixes can be used:
`b' for 512-byte blocks (this is the default if no suffix is used)
`c' for bytes
`w' for two-byte words
`k' for Kilobytes (units of 1024 bytes)
`M' for Megabytes (units of 1048576 bytes)
`G' for Gigabytes (units of 1073741824 bytes)
Run Code Online (Sandbox Code Playgroud)
是否有历史原因b选择“块”而不是“字节”,我怀疑这将是更常见的假设?为什么会是默认的块而不是字节?什么时候以及为什么有人想要使用这个单位?转换为字节/千字节涉及一些数学运算,作为默认单位似乎不太方便。
Unix 的第一个版本碰巧在它们的文件系统和磁盘驱动程序中使用了 512 字节的块。Unix 一开始是一个非常简约的低级系统,其接口紧跟实现,并泄露了本应保持抽象的细节,例如块大小。这就是为什么今天,“块”在许多上下文中仍然意味着 512 字节,即使可能有不同的块大小,甚至可能适用于给定文件的不同块大小(一个用于文件系统,一个用于卷管理器,一个用于磁盘……)。
该实现通过计算为文件分配了多少数据块来跟踪磁盘使用情况,因此很容易将文件大小报告为块数。磁盘使用量和文件大小可能不同,这不仅是因为磁盘使用量通常是四舍五入为整数块的大小,还因为稀疏文件的块数少于通常所需的大小。据我所知,早期实现稀疏文件的 Unix 系统find -size使用的是文件使用的块数,而不是文件大小;现代实现使用四舍五入的文件大小(POSIX 规范中对此效果有说明)。
最早的find实现只接受-size. 在某一时刻,find -size开始接受一个c后缀指示多个Ç haracters代替块; 我不知道是谁开始的,但在4.3BSD就是这种情况。其他后缀后来出现,例如在 FreeBSD 中,6.2 版引入了k,M以及其他后缀,但b我认为只存在于 GNU 和 BusyBox 中。
历史上,许多程序交替使用“字符”和“字节”,并且倾向于使用“字符”一词。例如,wc -c计算字节数。对多字节字符的支持,以及因此与字节数不同的字符数,是一种相对较新的现象。
总之,没有目的。512 字节的块大小、它是默认单位的事实以及字母的使用b不是故意产生的,而是通过历史偶然出现的。