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

如何对多文件批量执行grep并将结果输出到原文件名加a后缀的新文件

批量匹配文件内容并生成对应结果文件的解决方案

你之前的find -exec写法失效是因为重定向符>无法被-exec直接识别为shell操作符,且直接在-exec参数内多次使用{}也存在解析限制,可使用以下几种方案实现需求:

方案1:find 配合 sh 调用实现

find . -maxdepth 1 -type f -name "[0-9]*-[0-9]*" -exec sh -c 'grep "你的实际匹配pattern" "$0" > "${0}a"' {} \;

说明:

  • -maxdepth 1 限制仅处理当前目录下的文件,不递归子目录
  • 文件名匹配规则[0-9]*-[0-9]*仅匹配数字-数字格式的文件,避免误伤其他文件
  • 通过sh -c将文件名作为参数传入shell环境,即可正常使用变量拼接实现重定向

方案2:当前目录直接用for循环(更简洁)

如果所有待处理文件都在当前目录,直接遍历更简单:

for f in [0-9]*-[0-9]*; do
  grep "你的实际匹配pattern" "$f" > "${f}a"
done

方案3:awk实现单命令批量处理

awk '/你的实际匹配pattern/ { print > FILENAME "a" }' [0-9]*-[0-9]*

说明:依赖awk内置变量FILENAME自动获取当前处理的文件名,匹配到目标pattern的行会直接写入到原文件名加a后缀的文件中,如需追加内容而非覆盖,将>改为>>即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:24:08