gpt4 book ai didi

bash - 从 find 命令执行 bash 函数

转载 作者:行者123 更新时间:2023-11-29 09:01:39 24 4
gpt4 key购买 nike

我在 bash 中定义了一个函数,它检查两个文件是否存在,比较它们是否相等并删除其中一个。

function remodup {
F=$1
G=${F/.mod/}
if [ -f "$F" ] && [ -f "$G" ]
then
cmp --silent "$F" "$G" && rm "$F" || echo "$G was modified"
fi
}

然后我想从一个查找命令中调用这个函数:

find $DIR -name "*.mod" -type f -exec remodup {} \;

我也试过| xargs 语法。 findxargs 都表明 ``remodup` 不存在。

我可以将该函数移动到一个单独的 bash 脚本中并调用该脚本,但我不想将该函数复制到一个路径目录中(目前),所以我要么需要使用绝对路径调用该函数脚本或者始终从同一位置调用调用脚本。

(我可能可以使用 fdupes 来完成这个特定的任务,但我想找到一种方法来完成这两个任务

  1. find 命令调用函数;
  2. 从另一个脚本的相对路径调用一个脚本;或者
  3. 对通过 find 命令找到的文件使用 ${F/.mod/} 语法(或其他 bash 变量操作)。)

最佳答案

您需要先导出函数,使用:

export -f remodup

然后将其用作:

find $DIR -name "*.mod" -type f -exec bash -c 'remodup "$1"' - {} \;

关于bash - 从 find 命令执行 bash 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30879058/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com