使用 find 和 -size 测试

Joh*_*son 3 find

我最初是在 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)

非常感谢您的帮助。

mur*_*uru 6

这在联机帮助页中有解释(重点是我的):

请记住,大小四舍五入到下一个单位。因此-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总是只匹配空文件吗?