批量在TXT文件第二行插入带<>的文件名的实现方案问询
批量在TXT文件第二行插入带<>包裹的文件名
需要给目录下所有TXT文件的第二行插入格式为 <文件名>的内容(注意开头的四个空格),以下是几种不同工具的实现方案:
Python 实现
适合跨平台(Windows/Linux/macOS),处理大量文件稳定,可按需添加备份逻辑:
import os # 遍历当前目录下所有txt文件 for filename in os.listdir('.'): if filename.endswith('.txt'): # 读取文件内容 with open(filename, 'r', encoding='utf-8') as f: lines = f.readlines() # 确保文件至少有一行,在第二行插入目标内容 if len(lines) >= 1: insert_line = f' <{filename}>\n' lines.insert(1, insert_line) # 写回文件(如需备份,可先将原文件复制至备份目录) with open(filename, 'w', encoding='utf-8') as f: f.writelines(lines) print(f"处理完成:{filename}")
使用方法:
- 将代码保存为
insert_filename.py - 放到TXT文件所在目录
- 运行命令:
python insert_filename.py
Linux Bash 实现
利用sed命令快速处理,适合Linux/macOS终端:
for file in *.txt; do # 插入内容到第二行,-i.bak会生成原文件的备份(后缀.bak),不需要备份可去掉.bak sed -i.bak "2i <$file>" "$file" # 可选:删除备份文件 # rm "$file.bak" done
使用方法:
- 打开终端,切换到TXT文件所在目录
- 直接执行上述命令
PowerShell 实现
适合Windows环境,原生支持:
Get-ChildItem -Filter *.txt | ForEach-Object { $content = Get-Content $_.FullName # 在第二行插入目标内容 $newContent = $content[0], " <$($_.Name)>", $content[1..($content.Count-1)] Set-Content $_.FullName -Value $newContent -Encoding UTF8 Write-Host "处理完成:$($_.Name)" }
使用方法:
- 打开PowerShell,切换到TXT文件所在目录
- 直接执行上述命令
CMD(Windows命令提示符)实现
借助原生工具处理,需通过临时文件中转:
@echo off setlocal enabledelayedexpansion for %%f in (*.txt) do ( :: 创建临时文件 type nul > temp.txt :: 写入原文件第一行 more +1 -1 "%%f" >> temp.txt :: 插入带文件名的行 echo ^<%%f^>> temp.txt :: 写入原文件剩余行 more +2 "%%f" >> temp.txt :: 替换原文件 move /y temp.txt "%%f" echo 处理完成:%%f ) endlocal
使用方法:
- 将代码保存为
insert_filename.bat - 放到TXT文件所在目录
- 双击运行该批处理文件
内容的提问来源于stack exchange,提问作者Bruno Guimaraes
相关产品推荐
相关产品推荐

