使用 find 和 -size 测试

使用 find 和 -size 测试

我最初在 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总是只匹配空文件了吗?

相关内容