我最初在 Ubuntu 论坛上问了这个问题,我以为我理解了,但是后来我看到有人以不同的方式使用相同的命令,现在我不确定我是否还理解它,所以我再次谦虚地请求您的帮助。
这是我的标准图片目录的样子:
-rw-rw-r-- 1 mason mason 1.3M Aug 12 21:35 Beijing-trip.jpg
-rw-r--r-- 1 mason mason 26K May 27 2013 Eiffel-tour.jpg
-rw-r--r-- 1 mason mason 1.5M Sep 20 2013 work-buddies.jpg
-rw-r--r-- 1 mason mason 155K Apr 2 2013 Q1-profits.jpg
-rw-r--r-- 1 mason mason 245K Nov 27 2016 Ireland.jpg
-rw-r--r-- 1 mason mason 675K Jun 14 2014 Christmas.jpg
-rw-r--r-- 1 mason mason 210K Nov 27 2016 Thanksgiving.jpg
-rw-r--r-- 1 mason mason 348K May 27 2013 family.jpg
-rw-r--r-- 1 mason mason 805K Feb 27 2015 museum-of-fine-arts.jpg
-rw-r--r-- 1 mason mason 8.6K May 26 2013 4th-of-July.jpg
-rw-r--r-- 1 mason mason 20K Mar 9 2013 Taipei.jpg
-rw-r--r-- 1 mason mason 1.9M Jun 14 2014 Australia.jpg
-rw-r--r-- 1 mason mason 404K Aug 10 21:53 business-trip.jpg
drwxrwxr-x 2 mason mason 4.0K Mar 18 16:55 Wallpapers
-rw-r--r-- 1 mason mason 145K Jan 15 2015 family-reunion.jpg
-rw-r--r-- 1 mason mason 6.7K Apr 2 2013 friends-and-family.jpg
根据 find 命令的手册页,当使用测试时-size
,文件大小在由命令处理之前会被四舍五入find
,但我想知道的是四舍五入多少?
具体来说,为什么它find . -size -1M
什么都不返回,而
find . -size -8k
打印文件friends-and-family.jpg
和目录 Wallpapers?也许我一直误解了这一点,但在 Ubuntu 论坛上,我第一次了解到,friends-and-family.jpg
输入后文件未显示在输出中的原因find . -size -1M
是因为文件四舍五入为 1MB,而由于我们明确要求的文件小于 1MB,因此 find 命令不会打印文件的名称。但是,如果friends-and-family.jpg
在命令的第一次迭代中文件四舍五入为 1MB,那么为什么friends-and-family.jpg
在输入时文件会出现在输出中find . -size -8k
?文件不应该friends-and-family.jpg
再次四舍五入为 1MB 吗?如果是这样,那么当我们明确要求文件小于 8KB 时,为什么 1MB 大小的文件会出现在输出中?
除了上述问题之外,我还需要知道在键入以下命令时上述文件会被四舍五入到什么值:
find . -size -2M
find . -size -3M
find . -size -8k
find . -size -10k
find . -size -2G
非常感谢您的帮助。
答案1
这在手册页(重点是我的):
请记住,尺寸会四舍五入到下一个单元。因此
-size -1M
不等同于-size -1048576c
。前者只匹配空文件,后者匹配 1 到 1,048,575 字节的文件。
注意:下一步单元。使用 时-1M
,大小为 6.7k(~0.007M)的文件会四舍五入为 1M,因为所考虑的单位是 MB。同样,使用 时-8k
,大小会四舍五入为 7k,因为当前单位是 KB,这完全在限制范围内。
因此,对于这些命令:
find . -size -2M
find . -size -3M
find . -size -8k
find . -size -10k
find . -size -2G
6.7k 的大小将分别四舍五入为 1M、1M、7k、7k、1G。
现在,回到引用的段落,您明白为什么-size -1x
任何单元x
总是只匹配空文件了吗?