-exec 缺少参数

She*_*don 0 bash amazon-s3 amazon-web-services gnu-findutils

我遇到 bash 命令返回以下错误的问题:

/usr/bin/find: missing argument to `-exec'
Run Code Online (Sandbox Code Playgroud)

我正在运行的实际命令是:

/usr/bin/find /backup-directory/ -maxdepth 1 -type f -mtime +14 -printf "%f\n" -exec /usr/local/bin/aws s3 mv /backup-directory/{} s3://my-s3-bin/{}\;
Run Code Online (Sandbox Code Playgroud)

目标是每晚从 crontab 调用此命令来搜索目录并使用 aws cli 将任何超过 14 天的文件移动到 Amazon S3。

find 命令可以正常工作,直到 -exec 之前,输出如下:

/usr/bin/find /backup-directory/ -maxdepth 1 -type f -mtime +14 -printf "%f\n"
20161030002947.Pg
20161029002644.Pg
20161027002705.Pg
20161028002402.Pg
20161031002440.Pg
Run Code Online (Sandbox Code Playgroud)

只需使用要移动的显式文件名的 aws cli move 命令即可按预期工作:例如,以下命令会将 20161030002947.Pg 从本地备份目录移动到 s3 bin。

/usr/local/bin/aws s3 mv /backup-directory/20161030002947.Pg s3://my-s3-bin/20161030002947.Pg
Run Code Online (Sandbox Code Playgroud)

我不知道为什么当我将它们与 -exec 和 {} 参数放在一起时它会被破坏。

从完整路径调用所有内容的原因是为了确保从 crontab 调用命令时不会出现不可预见的问题,并且该特定服务器上的操作系统是 Debian 8。