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

如何基于文件名前两个词为批量TXT文件添加指定格式头部?

批量给文本文件添加自定义头部的Bash方案

当然可以!用Bash脚本就能轻松搞定这个批量操作,下面是具体的实现方法,还包含了安全备份的小细节:

方法一:用Bash循环+cut命令实现

直接在终端里运行这段脚本,或者保存成.sh文件执行:

# 遍历所有符合命名格式的txt文件
for file in *.txt; do
  # 跳过非文件(比如目录)
  [ -f "$file" ] || continue
  
  # 提取文件名中前两个下划线分隔的部分
  # 先去掉.txt后缀,再取前两个字段
  prefix=$(echo "$file" | sed 's/\.txt$//' | cut -d'_' -f1-2)
  
  # 生成要添加的头部内容
  header=">c_${prefix}"
  
  # 临时文件存储添加头部后的内容,避免直接修改原文件出错
  temp_file="${file}.tmp"
  
  # 将头部和原文件内容合并到临时文件
  echo "$header" > "$temp_file"
  cat "$file" >> "$temp_file"
  
  # 替换原文件(可选:可以先备份原文件,比如把下面一行注释去掉)
  # cp "$file" "${file}.bak"
  mv "$temp_file" "$file"
  
  echo "处理完成:$file"
done

方法二:用更高效的参数扩展(无需外部命令)

如果你的Bash版本比较新(4.0+),可以用参数扩展来提取前缀,避免调用sed和cut,速度更快:

for file in *.txt; do
  [ -f "$file" ] || continue
  
  # 去掉后缀:${file%.txt} 会把最后一个.txt去掉
  filename_no_ext="${file%.txt}"
  # 提取前两个下划线分隔的部分:用%%_*_*来删除从第三个下划线开始的内容
  prefix="${filename_no_ext%%_*_*}"
  
  header=">c_${prefix}"
  temp_file="${file}.tmp"
  
  echo "$header" > "$temp_file"
  cat "$file" >> "$temp_file"
  
  # 可选备份
  # cp "$file" "${file}.bak"
  mv "$temp_file" "$file"
  
  echo "处理完成:$file"
done

注意事项

  • 备份原文件:建议先取消注释脚本里的cp "$file" "${file}.bak"行,这样每个原文件都会生成一个.bak备份,避免操作失误导致数据丢失。
  • 测试脚本:可以先找一个测试文件,单独运行脚本里的提取前缀命令,确认prefix的结果是否正确,比如:
    test_file="word1_word2_word3_word4.txt"
    echo "$test_file" | sed 's/\.txt$//' | cut -d'_' -f1-2
    # 应该输出 word1_word2
    
  • 文件命名格式:确保所有目标文件都是word1_word2_word3_word4.txt的格式,如果有不符合的文件,脚本会自动跳过(因为[ -f "$file" ]会检查是否是文件,而提取前缀的部分对于格式不对的文件可能得到错误结果,所以建议先筛选出符合格式的文件再处理)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:12:02