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

Bash技术问询:如何将目录中多文件合并为含文件名的单文件

用Bash合并文件并在内容前添加文件名的方法

嗨,我来帮你搞定这个需求!要把目录下的多个文件合并成一个名为master的文件,并且每个文件的内容前先显示对应的文件名,这里有几个实用的Bash方案:

方法一:用for循环(最直观易读)

这是最容易理解的写法,适合新手快速上手:

for file in *; do
  # 跳过目标文件master,并且只处理普通文件(排除子目录)
  if [ "$file" != "master" ] && [ -f "$file" ]; then
    echo "$file"    # 先输出文件名
    cat "$file"     # 再输出文件内容
  fi
done > master

命令说明:

  • for file in *:遍历当前目录下的所有条目(文件和目录)
  • [ "$file" != "master" ]:避免把刚生成的master文件也加入合并
  • [ -f "$file" ]:确保只处理普通文件,跳过子目录
  • > master:把所有输出结果重定向到master文件中

方法二:用awk(更简洁高效)

如果你想写得更简洁,awk是个好选择,它专门处理文本场景:

awk 'BEGINFILE {
  # 同样跳过master文件,只处理普通文件
  if (FILENAME != "master" && -f FILENAME)
    print FILENAME
} 1' * > master

命令说明:

  • BEGINFILE:awk的特殊处理块,会在开始处理每个文件前执行,这里用来打印当前文件名FILENAME
  • 1:awk的简写语法,代表“为真”,会默认执行print $0,也就是打印当前行内容
  • 整个命令会自动遍历所有匹配的文件,完成文件名+内容的输出合并

验证效果

假设你有三个文件:

  • File 1 内容为store
  • File 2 内容为bank
  • File 3 内容为car

执行上述任意命令后,查看master文件的内容:

cat master

会得到:

File 1
store
File 2
bank
File 3
car

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:53:41