使用测试通过 find 和 execdir 选项检查条件

使用测试通过 find 和 execdir 选项检查条件

我想我可以简短地回答我的问题。为什么以下命令没有输出?

find /usr/share/themes -mindepth 1 -maxdepth 1 -type d -execdir test -d {}/gnome-shell \;

我期望它打印所有文件夹/usr/share/主题包含一个文件夹gnome 外壳exec。有几个网站表明,在/中将 test 用作命令execdir是可行的。

man find

-exec command ;
              Execute  command;  true  if 0 status is returned. [...]

答案1

–exec–execdir如果命名的程序返回 0 值作为其退出状态,则计算结果为 true。

这意味着,如果你说了类似–execdir test -d {}/gnome-shell \; –print或 的内容,那么只有当命令返回 true 时,后面的内容才会被处理。举一个极端的例子,你甚至可以说–exec … \; –something–exectest

寻找起始目录…–execdir test–d {}/gnome-shell \;–exec rm–rf {} \;

尽管这不一定是最好的方法。

答案2

test不输出任何内容,它仅返回退出状态。

但是,如果您仅进行深度 1 测试,则可以find完全避免:

ls -d /usr/share/themes/*/gnome-shell

相关内容