我想检查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。两个文件出现在输出中的原因是什么?
答案 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)
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吗?