我最初是在 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
Run Code Online (Sandbox Code Playgroud)
根据 find 命令的手册页,在使用-size测试时,文件大小在被find命令处理之前会被四舍五入,但我想知道是多少?
具体来说,为什么find . -size -1M什么都不返回,而
find . -size -8k打印文件friends-and-family.jpg和目录壁纸?也许我一直误解了这一点,但在 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
Run Code Online (Sandbox Code Playgroud)
非常感谢您的帮助。
这在联机帮助页中有解释(重点是我的):
请记住,大小四舍五入到下一个单位。因此
-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
Run Code Online (Sandbox Code Playgroud)
6.7k 的大小将分别四舍五入为 1M、1M、7k、7k、1G。
现在,回到引用的段落,你明白为什么-size -1x任何单元x总是只匹配空文件吗?