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

如何在Linux终端用foreach拆分文件行并给sed命令传参?

实现方法

下面是几种在Linux终端中对File.txt里列出的所有文件执行sed命令的实用方式:

方法一:Bash循环(兼容性最强)

这是通用度最高的方案,所有主流Shell都支持:

while IFS= read -r file_path; do
  # 替换成你实际需要的sed操作,比如替换文本、删除行等
  sed -i 's/旧字符串/新字符串/g' "$file_path"
done < File.txt
  • IFS= 确保保留文件路径中的首尾空格不被截断
  • -r 禁用反斜杠转义,避免路径里的反斜杠被错误解析
  • -i 表示原地修改文件,如果需要备份原文件,可改成 -i.bak(会生成后缀为.bak的备份)

方法二:xargs命令(简洁高效)

用xargs按行读取路径并批量执行sed:

# 基础版,适合无空格的路径
xargs -I {} sed -i 's/旧字符串/新字符串/g' {} < File.txt

# 兼容含空格路径的版本
xargs -d '\n' -I {} sed -i 's/旧字符串/新字符串/g' {} < File.txt
  • -I {} 用每行路径替换命令中的{}占位符
  • -d '\n' 指定换行符为分隔符,确保带空格的路径不会被拆成多个参数

方法三:Zsh的foreach循环(针对Zsh用户)

如果你的终端用Zsh,可以用它原生的foreach语法:

foreach file ("${(@f)$(<File.txt)}"); do
  sed -i 's/旧字符串/新字符串/g' "$file"
done
  • ${(@f)$(<File.txt)} 会把File.txt内容按行拆分成数组,供foreach遍历

注意事项

  • 若不需要原地修改文件,仅输出修改后的内容,去掉sed的-i参数即可
  • 确保File.txt中每行都是有效文件路径,避免sed报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 00:52:14