如何在自定义 bash 函数中“找到 -exec”?

如何在自定义 bash 函数中“找到 -exec”?

我想创建一个函数来归档所有早于某个预先指定的文件的文件。到目前为止,我有以下内容:

archive_gs() { find "$GS" -maxdepth 1 -not -newer "$1" -exec mv -t "$GS/../old/" {} \; }

但是这会返回syntax error: unexpected end of file错误。我猜想这与未转义的花括号有关?谢谢!

答案1

在 bash 中,{}的作用类似于关键字,而不是标点符号 - 如果结尾}与命令位于同一行,则命令必须以;或其他分隔符结尾。(换句话说,其作用与或{ x; }完全相同。)do x; doneif x; then x; fi

现有的\;不算数,因为反斜杠使其成为“find”的常规参数,因此不再是命令终止符。

正确的命令是:

archive_gs() { find "$GS" -maxdepth 1 -not -newer "$1" -exec mv -t "$GS/../old/" {} \;}

相关内容