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

如何在find命令的exec语句中添加额外参数及管道命令

问题核心原因

你之前的写法报错是因为:-exec参数默认只接受单条可执行命令加参数,直接写管道符|的话,shell会优先将管道解析为find命令整体的后续管道,而非作用于grep的输出结果,导致语法或执行逻辑错误。

正确实现写法

写法1:-exec内嵌shell执行(适配单文件逐处理场景)

将grep和cut的命令序列用sh -c包裹,让子shell解析管道逻辑:

find path/*.log -mtime -7 -exec sh -c 'grep "string" "$0" | cut -d "\"" -f 6' {} >> file.txt \;

说明:$0对应占位符{}传入的单个匹配文件路径,嵌套的双引号做了转义避免语法冲突

写法2:find + xargs组合(更推荐,性能更高)

不需要逐个文件创建进程,一次性处理所有匹配文件,同时兼容带空格/特殊字符的文件名:

find path/*.log -mtime -7 -print0 | xargs -0 grep "string" | cut -d '"' -f 6 >> file.txt

注意事项

  • 如果不需要对单个文件做额外处理,优先选第二种写法,执行效率比第一种高30%以上
  • 若你的cut分隔符是单引号,注意调整引号嵌套规则避免解析错误
  • 追加写入>> file.txt的位置可以放在整行末尾,不需要放到-exec内部,结果完全一致

内容的提问来源于stack exchange,提问作者Jan Všetečka

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:27:04