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

如何从bash find exec命令获取两个参数执行lychee相册同步脚本

实现方案

你可以在find的-exec参数中调用bash处理路径截取,完整命令如下:

find /mnt/Pictures -mtime -5 -mindepth 1 -type d -exec bash -c 'for dir in "$@"; do album_name="${dir##*/}"; php artisan lychee:sync "$dir" --album_id="$album_name"; done' _ {} +

参数说明

  • 新增-type d限定只匹配目录,避免误同步单个文件
  • 使用bash -c开启子shell处理字符串逻辑,$@用来接收find传递的所有匹配目录
  • ${dir##*/}是bash原生参数扩展,会自动删除路径中最后一个/之前的所有内容,直接提取纯目录名,对带空格的目录(比如Paris Trip)也能正常适配
  • 命令末尾的_是占位符,用于填充bash -c的$0参数位,避免第一个匹配到的目录被误吞
  • 用+代替\;可以一次性传递多个匹配结果,执行效率更高

测试方法

你可以先执行下面的测试命令,验证输出的同步指令是否符合预期,确认无误后再去掉echo执行正式同步:

find /mnt/Pictures -mtime -5 -mindepth 1 -type d -exec bash -c 'for dir in "$@"; do album_name="${dir##*/}"; echo php artisan lychee:sync "$dir" --album_id="$album_name"; done' _ {} +

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 00:27:05