复制指定范围内文件大小的文件和目录树

use*_*606 2 find shell-script file-copy

我想制作一个小脚本,将文件从不同的目录示例/pp/01 /pp/02/等复制到另一个具有相同目录设计的目的地。但是只有目录中大于88MB但小于93MB的文件...

我会使用 for 循环和 find 函数。有没有更有效的方法?以及如何准确地实现查找功能。

Mat*_*nco 5

这个命令:

rsync -a --min-size 88m --max-size 93m pp /new_destination/
Run Code Online (Sandbox Code Playgroud)

将结构从 复制pp/new_destination,但只复制大小至少为 88 MB 且最大为 93 MB 的文件。

如果愿意,可以在最终目标说明符之前添加更多源目录树,例如:

rsync -a --min-size 88m --max-size 93m pp/01 pp/02 /target/
Run Code Online (Sandbox Code Playgroud)

如果向源规范(pp/而不是pp)添加尾部斜杠,rsync则不会在目标中创建该目录。

换句话说:pp在我的第一个例子中,结果是/new_destination/pp/01/...,而这个:

rsync -a --min-size 88m --max-size 93m pp/ /new_destination/
Run Code Online (Sandbox Code Playgroud)

而是导致/new_destination/01/..., /new_destination/02/...

-a标志rsync该递归目录中的文件蜜饯元数据,如权限和时间戳的意思是“档案”。(这是一个方便的选项,等于-rlptgoD这是一个非常流行的选项组合)。