“find”命令中的“{\} {}”是什么意思?

“find”命令中的“{\} {}”是什么意思?

请详细解释一下这个命令。

我使用此命令查找超过 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每个文件。

相关内容