10.4 根据文件大小搜索文件
file -size
有时,可能需要根据文件的大小查找文件,find
命令可以进行这样的搜索。使用-size
选项指定文件大小,在其后的数字后面加一个字符,表示使用的单位。如果不提供单位字符,则使用默认值。不过,你应该明白这可能不能搜索出你想找的内容。如果没有在数字后面附加字符,默认使用的大小单位就是512字节块(文件的字节数先除以512,再取整到最接近的一个整数)。真是太复杂的数学计算。更容易的表示方法是在数字后面使用后缀,用较为通用的单位表示文件大小,如表10-1所示。
表10-1 根据文件大小搜索文件
后 缀 | 含 义 |
---|---|
b | 512字节块(默认值) |
c | 字节(Byte) |
k | 千字节(Kilobyte,KB) |
M | 兆字节(Megabyte,MB) |
G | 吉字节(Gigabyte,GB) |
假设我们想在Clash久唱不衰的专辑(如London Calling)中查找文件大小是10 MB的歌曲。使用find
命令完成这个搜索非常简单,如下所示:
$ cd Punk/Clash/1979_London_Calling
$ find . -size 10M
./07_-_The_Right_Profile.ogg
./08_-_Lost_In_The_Supermarket.ogg
./09_-_Clampdown.ogg
./12_-_Death_Or_Glory.ogg
真奇怪,只有4首歌?使用find
命令时需要注意一点:如果只说10M
,那么find
命令就只搜索文件大小恰好是10 MB的文件(当然是取整后的10 MB)。如果要搜索的文件大小大于10 MB,需要在指定的大小前面加一个加号(+);如果要搜索的文件大小小于10 MB,则需要在大小前面加一个减号(-),如下所示:
$ find . -size +10M
./Jimmy_Jazz.ogg
./ Lover's_Rock.ogg
./ Revolution_Rock.ogg
现在有一个问题,指定10M
,搜索到的文件正好就是10 MB,而不包括那些比10 MB更大的文件;指定+10M
,搜索到的文件将都超过10 MB,但不包括那些正好是10 MB的文件。如何二者兼得呢? 如果想学习如何获得大于或等于10 MB文件的方法,可以阅读10.7节。
提示 如果要搜索大型文本文件,可以在数字后面使用
c
。如表10-1所示,c
将搜索的大小单位修改成字节。在文本文件中一个字符就是一个字节,所以记住选项c
的一种简单办法就是,把它与文本文件中的“字符(character)”联系起来记忆。例如,为搜索大文本文件,可以使用以下代码:
$ find /home/scott/documents -size +500000c