请详细解释一下这个命令。
我使用此命令查找超过 6 MB 的大文件,并将它们拆分为同一文件夹中的 5 MB 块。然后它会删除同一目录中的原始文件(大于 6MB)。
find . -size +6M -exec split -d -b 5M {\} {}-part \; | find . -size +6M -exec rm -rf {} \;
我不知道命令以下部分的目的:
{\} {}
我的目标是开发一个脚本,用于每月将 Virtualmin 域备份到 Amazon S3 存储桶。
由于 Amazon S3 上的 5 GB PUT 限制,我必须将域备份 ( tar.gz
) 拆分为小于 5 GB 的大小。
答案1
来自find 的联机帮助页:
字符串“{}”被替换为在命令参数中出现的所有地方正在处理的当前文件名...
因此,命令的第一部分find
搜索大于 6 MB 的文件并对每个找到的文件执行 ( -exec
) 。split
例如,如果找到的文件是./path/to/file
,则执行的命令将为:
split -d -b 5M ./path/to/file ./path/to/file-part
{}
是用文件路径替换的占位符。这{\}
是不必要的,也可能是{}
。
在第二个 find 命令(管道 ( ) 之后的命令)中|
,该find
命令调用rm -rf
每个文件。