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

例如:

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

其结果是:

find: dosomething: No such file or directory

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

推荐答案

因为只有shell知道如何运行shell函数,所以必须运行shell才能运行函数.您还需要将导出函数标记为export -f,否则子shell将不会继承它们:

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

Linux相关问答推荐

Flutter 构建错误:';DART:JS_interop';在此平台上不可用

使用ms宏将PIC图像放置在页面的任意位置

eBPF:仅使用系统调用加载 eBPF 程序并将其附加到 sys_enter_execve

如何从大页分配标准数组内存

如何更改文件的上次访问/修改/更改日期?

awk 不打印所需的 df 输出

如何在makefile中包含静态库

PHP factor 30 从 Linux 到 Windows 的性能差异

linux远程执行命令

Vagrant chicken-and-egg:与 uid = apache 用户共享文件夹

是否可以在 Linux x86 GAS 程序集中创建没有系统调用的线程?

在 C 中设置环境变量

PuTTY:更改默认 SSH 登录目录

zsh/bash 上不区分大小写的 Glob

在 linux 上查看文件大小

GNU Octave 方法对矩阵中的每个项目进行操作.octave arrayfun(...)示例

如何在 linux 或 unix 上找到用户的主目录?

在 shell 脚本的 for 循环中迭代行而不是单词

在 Linux 中,名称与正则表达式匹配的文件的磁盘使用情况?

使用 Bash 查找和复制文件