开发者

Checking file size

I want to check the file size in a shell script. I am trying to check if the file in a specific directory exceeds 2 GB, i.e., 2,147,483,648 bytes.

How can I easily do this in a shell script?

I have the following two files:

-rw-rw-rw-    1 op       general  1977591120 Jul 02 08:27 abc
-rw-rw-rw-    1 op       general  6263142976 Jul 01 18:39 xyz

When I run find . -size +2047MB, I get both the files as output

./abc
./xyz

I expect only xyz in the output size it is ~6 GB and abc is slightly less than ~2 GB . What can be the reason for both files showing up in the ou开发者_高级运维tput?


How to find files in a specific directory

What man says

-size n[cwbkMG]

        File uses n units of space.  The following suffixes can be used:

        `b'    for 512-byte blocks (this is the default if no suffix is used)
        `c'    for bytes
        `w'    for two-byte words
        `k'    for Kilobytes (units of 1024 bytes)
        `M'    for Megabytes (units of 1048576 bytes)
        `G'    for Gigabytes (units of 1073741824 bytes)

Examples

Find files larger than 2 GB in the current directory, but don't look in subdirectories

find . -size +2G -maxdepth 1

Output it with the ls -dils format

find . -size +2G -maxdepth 1 -ls

Other comments

I'm surprised your MB didn't kick out an error. Example: find: invalid -size type `B'

This may be due to your distribution.


Compare:

stat -f "%z bytes   %N"  ./*     # FreeBSD stat                                         syntax highlighter fix */

find . -size +$((2*1024*1024*1024))c    #  man 1 find | less -p '-size'


Try find . -size +2047M without the B. This seems to work in subdirectories too.


My guess would be that find is including the file system overhead and any unused space in the cluster occupied by the file.


Try using +2G instead of MB...


I would suggest checking out the du command.

Use the -h option like... du yourfilename.ext -h and you'll get something humanly readable.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜