find 命令的 -exec 选项在 Ubuntu 上没有按预期工作

-exec option of the find command does not work as expected on Ubuntu

我正在对 find 命令进行一些练习,但是当我尝试使用它的 -exec 选项时,我没有得到预期的结果。我写的命令在没有 -exec 选项的情况下也能正常工作,如下所示:

$ find ~ \( -type f -not -perm 0600 \) -or \( -type d -name 'D*' \)
/home/baki/.bashrc
/home/baki/.bash_logout
/home/baki/.cache/motd.legal-displayed
/home/baki/.config/wslu/baseexec
/home/baki/.config/wslu/oemcp
/home/baki/.gitconfig
/home/baki/.landscape/sysinfo.log
/home/baki/.motd_shown
/home/baki/.profile
/home/baki/.ssh/known_hosts
/home/baki/.sudo_as_admin_successful
/home/baki/ssh_start
/home/baki/token

但是,当我在命令末尾添加 -exec 选项时,它没有给出任何输出:

find ~ \( -type f -not -perm 0600 \) -or \( -type d -name 'D*' \) -exec ls -l '{}' ';'

我已经搜索过了,但找不到可以解决我问题的有用信息。

是我的命令有误还是其他原因?

感谢您的帮助。

默认 -and 操作的优先级高于 -or。使用额外的括号:

find ~ \( \( -type f -not -perm 0600 \) -or \( -type d -name 'D*' \) \) -exec ls -l '{}' ';'

在这种情况下,您可以省略内括号。