![如何根据大小移动文件?](https://linux22.com/image/94484/%E5%A6%82%E4%BD%95%E6%A0%B9%E6%8D%AE%E5%A4%A7%E5%B0%8F%E7%A7%BB%E5%8A%A8%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我试过这个:
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"