相关疑难解决方法(0)

在 find -exec 调用中执行用户定义的函数

我在 Solaris 10 上使用 ksh (88)、bash (3.00) 和 zsh (4.2.1) 测试了以下内容。

以下代码不会产生任何结果:

function foo {
    echo "Hello World"
}

find somedir -exec foo \;
Run Code Online (Sandbox Code Playgroud)

这一发现不匹配多个文件(如更换-exec ...-print),并从外面叫时功能完美的作品find调用。

以下是该man find页面的内容-exec

 -exec command 如果执行的命令返回一个,则为真
                     零值作为退出状态。结尾
                     命令必须以转义字符作为标点
                     分号 (;)。命令参数 {} 是
                     替换为当前路径名。如果
                     -exec 的最后一个参数是 {} 而你
                     指定 + 而不是分号 (;),
                     命令被调用的次数更少,
                     {} 替换为路径名组。如果
                     命令的任何调用都会返回一个
                     非零值作为退出状态,找到
                     返回非零退出状态。

我可能会做这样的事情:

for f in $(find somedir); do
    foo
done
Run Code Online (Sandbox Code Playgroud)

但我害怕处理字段分隔符问题。

是否可以从调用中调用 shell 函数(在同一个脚本中定义,让我们不要理会范围问题)find ... -exec ...? …

solaris ksh find shell-script function

35
推荐指数
4
解决办法
3万
查看次数

标签 统计

find ×1

function ×1

ksh ×1

shell-script ×1

solaris ×1