检查文件大小

时间:2010-07-02 13:06:12

标签: bash find

我想检查shell脚本中的文件大小。我试图检查特定目录中的文件是否超过2 GB,即2147483648字节。

如何在shell脚本中轻松完成此操作?

我有以下两个文件:

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

当我运行find . -size +2047MB时,我将两个文件都作为输出

./abc
./xyz

我预计输出大小只有xyz大约是6gb而abc略小于~2gb。两个文件出现在输出中的原因是什么?

5 个答案:

答案 0 :(得分:3)

如何查找特定目录中的文件

男人说什么


  

-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)  


实施例


在当前目录中查找大于2GB的文件,但不要查看子目录

find . -size +2G -maxdepth 1

ls -dils格式

输出

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


其他评论


我很惊讶你MB没有发现错误。示例:find: invalid -size type `B'
这可能是由于你的发行版。

答案 1 :(得分:2)

比较:

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

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

答案 2 :(得分:1)

在没有B的情况下尝试find . -size +2047M。这似乎也适用于子目录。

答案 3 :(得分:0)

我的猜测是,find包括文件系统开销和文件占用的集群中任何未使用的空间。

答案 4 :(得分:0)

你试过给+ 2G代替MB吗?