如何在单行内容TXT文件末尾追加无扩展名的文件名
嘿,我来帮你搞定这个需求!针对不同的操作系统,我整理了几种简单可行的方法,你可以根据自己的情况选择:
方法1:Linux/macOS 下的 Shell 脚本
这个方法直接用系统自带的命令就能完成,不需要额外安装工具:
for file in *.txt; do # 获取不带 .txt 扩展名的文件名 filename="${file%.txt}" # 在文件内容末尾追加空格和文件名,同时生成备份文件 sed -i.bak "s/$/ $filename/" "$file" # 移除自动生成的备份文件(如果不需要可以删掉这行) rm "${file}.bak" done
- 解释:
${file%.txt}是 Shell 的参数扩展语法,用来去掉文件名末尾的.txt;sed -i.bak会原地修改文件,s/$/ $filename/表示在每行末尾($匹配行尾)追加空格和文件名。
方法2:Windows 下的批处理脚本
如果是Windows系统,可以用批处理脚本实现:
@echo off setlocal enabledelayedexpansion for %%f in (*.txt) do ( # 获取不带扩展名的文件名 set "filename=%%~nf" # 读取文件的单行内容并追加文件名 for /f "delims=" %%l in ("%%f") do ( echo %%l !filename! > "temp.txt" # 覆盖原文件 move /y "temp.txt" "%%f" ) ) endlocal
- 解释:
%%~nf是批处理中获取不带扩展名文件名的语法;enabledelayedexpansion用来确保循环里的变量能实时更新,避免读取到旧值。
方法3:Python 脚本(跨平台通用)
如果需要跨平台使用,或者你熟悉Python,这个脚本在Windows、Linux、macOS上都能运行:
import os # 遍历当前目录下所有的TXT文件 for file_name in os.listdir('.'): if file_name.lower().endswith('.txt'): # 分离文件名和扩展名,获取不带后缀的名称 name_without_ext = os.path.splitext(file_name)[0] # 读取文件内容(因为是单行,直接读全部即可) with open(file_name, 'r', encoding='utf-8') as f: content = f.read().rstrip('\n') # 去掉末尾可能的换行符 # 写入追加后的内容 with open(file_name, 'w', encoding='utf-8') as f: f.write(f"{content} {name_without_ext}\n")
- 解释:这个脚本会自动处理编码问题,确保中文等特殊字符不会乱码;
rstrip('\n')是为了避免原文件末尾的换行导致追加后多出空行。
内容的提问来源于stack exchange,提问作者Vivek Sharma
相关产品推荐
相关产品推荐

