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 '{}' ';'
在这种情况下,您可以省略内括号。
我正在对 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 '{}' ';'
在这种情况下,您可以省略内括号。