I think this link might clear things up, [The Open Group Base Specifications Issue 7, IEEE Std 1003.1, 2013 Edition][1]. Here's an excerpt of the section form the specification for find: *excerpt from the find spec* > The -size operand refers to the size of a file, rather than the number > of blocks it may occupy in the file system. The intent is that the > st_size field defined in the System Interfaces volume of POSIX.1-2008 > should be used, not the st_blocks found in historical implementations. > There are at least two reasons for this: > > In both System V and BSD, find only uses st_size in size calculations > for the operands specified by this volume of POSIX.1-2008. (BSD uses > st_blocks only when processing the -ls primary.) > > Users usually think of file size in terms of bytes, which is also the > unit used by the ls utility for the output from the -l option. (In > both System V and BSD, ls uses st_size for the -l option size field > and uses st_blocks for the ls -s calculations. This volume of > POSIX.1-2008 does not specify ls -s.) If I understand this section correctly, the first section says it all "The -size operand refers to the size of a file". So the size is what's reported when evaluating st_size NOT st_blocks. ### Examples So you should be able to use commands like: # find files over 1G in size find / -type f -size +1G # find files smaller than 1G in size find / -type f -not -size +1G [1]: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/find.html