'find -exec' Linux 中的一个 shell 函数

新手上路,请多包涵

有没有办法让 find 执行我在 shell 中定义的函数?

例如:

 dosomething () {
  echo "Doing something with $1"
}
find . -exec dosomething {} \;

结果是:

 find: dosomething: No such file or directory

有没有办法让 find-exec 看到 dosomething

原文由 alxndr 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

由于只有 shell 知道如何运行 shell 函数,因此您必须运行 shell 才能运行函数。您还需要使用 export -f 标记要导出的函数,否则子shell不会继承它们:

 export -f dosomething
find . -exec bash -c 'dosomething "$0"' {} \;

原文由 Adam Rosenfield 发布,翻译遵循 CC BY-SA 3.0 许可协议

find . | while read file; do dosomething "$file"; done

原文由 Jac 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题