如何通过命令行合并TXT文件并为每条目追加原文件名
命令行解决方案(分平台)
Windows(CMD 命令行/批处理)
如果直接在CMD窗口执行,使用以下命令:
> merged_file.txt ( for %f in (*.txt) do ( if not "%f"=="merged_file.txt" ( for /f "delims=" %l in ("%f") do echo %l#%f ) ) )
如果保存为批处理脚本(.bat文件),需将变量前的%改为%%:
> merged_file.txt ( for %%f in (*.txt) do ( if not "%%f"=="merged_file.txt" ( for /f "delims=" %%l in ("%%f") do echo %%l#%%f ) ) )
for /f "delims="确保读取整行内容(包括行尾空格),避免截断。if not语句防止把生成的merged_file.txt也纳入合并范围。
Linux/macOS(Bash 终端)
方法1:用awk实现
> merged_file.txt for file in *.txt; do [ "$file" = "merged_file.txt" ] && continue awk -v filename="$file" '{print $0 "#" filename}' "$file" >> merged_file.txt done
方法2:用sed实现
> merged_file.txt for file in *.txt; do [ "$file" = "merged_file.txt" ] && continue sed "s/$/#$file/" "$file" >> merged_file.txt done
> merged_file.txt先清空目标文件(若已存在),再通过>>追加内容。[ "$file" = "merged_file.txt" ] && continue跳过目标文件,避免重复处理。
内容的提问来源于stack exchange,提问作者Hasan Mougharbel
相关产品推荐
相关产品推荐

