如何正确使用"find ... -exec ..."移动除少数以外的所有文件和目录?

How to use "find ... -exec ..." correctly to move all files and directories except a few?

我正在尝试从一个目录中移动除某些文件(或目录)之外的所有文件。我的表现如何:

sudo find. ! -name 'myarq.sh'! -name '.mydir'! -name '.' ! -name '..' -exec mv {} ./* .mydir

但我得到:

find: missing argument for "-exec"

我可能不知道使用“-exec”,我不知道上述情况下哪种语法是正确的。

通常,错误消息 find: missing argument for "-exec" 表示您未能正确终止命令,使用 ;+。尝试:

find ... -exec mv {} .mydir \;

find 的某些实现将通过使用 + 提供性能优势(将产生更少的子shell):

find ... -exec mv {} .mydir +

请注意,+ 不需要转义为 shell,但 ; 需要。