How do I move files based on size Unix?

Move all files smaller than 500kilobytes to destination

find . -type f -size -100k -exec mv '{}' ../ \;
 

Move all files larger than 500kilobytes to destination

find . -type f -size +500k -exec mv '{}' data/ \;
 

 

From my manpage (on a MacOS 10.11 machine)

 -size n[ckMGTP]
         True if the file's size, rounded up, in 512-byte blocks is n.  If
         n is followed by a c, then the primary is true if the file's size
         is n bytes (characters).  Similarly if n is followed by a scale
         indicator then the file's size is compared to n scaled as:

         k       kilobytes (1024 bytes)
         M       megabytes (1024 kilobytes)
         G       gigabytes (1024 megabytes)
         T       terabytes (1024 gigabytes)
         P       petabytes (1024 terabytes)

(suffixes other than c being non-standard extensions).

So, since you didn't specify a suffix, your -size 128 meant 128 blocks, or 64Kbytes that is only matched for files whose size was comprised in between 127*512+1 (65025) and 128*512 (65536) bytes.

You should use -size 128c if you want files of exactly 128 bytes, -size -128c for files of size strictly less than 128 bytes (0 to 127), and -size +128c for files of size strictly greater than 128 bytes (129 bytes and above).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值