如何根据大小移动文件?

如何根据大小移动文件?

我试过这个:

find . -type f -size 128 -exec mv {} new_dir/  \;

这不起作用,也没有给我错误。这是使用时文件的样子的示例stat -x

$ stat -x ./testfile | grep Size 
  Size: 128          FileType: Regular File

答案1

来自我的联机帮助页(在 MacOS 10.11 计算机上)

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

c(非标准扩展名之外的后缀)。

所以,由于您没有指定后缀,所以您的-size 128意思是 128,或 64Kbytes,仅匹配大小介于 127*512+1 (65025) 和 128*512 (65536) 字节之间的文件。

-size 128c如果您需要正好 128 字节的文件、-size -128c大小严格小于 128 字节(0 到 127)的文件以及-size +128c大小严格大于 128 字节(129 字节及以上)的文件,则应使用此选项。

答案2

我已将 cpNlargest 编码为 aaCP命令版本添加还有一些表达

#!/bin/bash

# cp - copy the N largest files and directories
# cp SOURCE DEST N EXP

SOURCE=$1
DEST=$2
N=$3
EXP=$4


for j in $(du -ah $SOURCE | grep $EXP | sort -rh | head -${N} | cut -f2 -d$'\t');
do
    cp $j $DEST;
done;

所以我从命令行调用它,如下所示:

$cpNlargest data-input/ data-output/ 5 "json"

相关内容