You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在多个相似目录批量执行bash命令简化重复脚本

你给出的find命令语法存在错误,缺少执行动作参数,无法直接实现你要的效果,以下是两种可用的简化实现方案:

方案1:for 循环实现(最易读、易维护)

直接遍历匹配到的站点admin目录,执行逻辑和你原有脚本完全一致:

for admin_dir in /home/admin/web/*/public_html/admin/; do
  # 用()开启子shell执行,cd操作不会影响父shell的工作目录
  (cd "$admin_dir" && /usr/bin/php cron.php) &
done

方案2:使用 find 命令实现

如果偏好使用find命令,可以用以下两种正确写法:

  1. 配合-exec调用子shell实现目录切换:
find /home/admin/web/*/public_html/admin/ -name 'cron.php' -type f -exec sh -c 'cd "$(dirname "{}")" && /usr/bin/php cron.php' \;
  1. 用find自带的-execdir参数(自动切换到文件所在目录执行,更简洁):
find /home/admin/web -path "*/public_html/admin/cron.php" -type f -execdir /usr/bin/php cron.php \;

注意事项

  • 所有方案默认都是前台执行,如果你需要和原有逻辑一样全部后台运行,在命令末尾加上&即可
  • 如果站点目录路径存在空格,一定要给变量、路径参数加双引号,避免路径解析错误
  • 如果cron.php依赖相对路径加载资源,务必保证执行时的工作目录是cron.php所在的admin目录,不要直接用php 绝对路径/cron.php的写法,避免运行异常

内容的提问来源于stack exchange,提问作者Zae

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 07:24:03