本文目录导读:

使用 Shell 命令(Linux/Mac)
合并文本文件
# 合并当前目录所有txt文件
cat *.txt > merged.txt
# 按特定顺序合并
cat file1.txt file2.txt file3.txt > merged.txt
# 递归合并子目录文件
find . -name "*.txt" -exec cat {} \; > merged.txt
添加文件名分隔符
for file in *.txt; do
echo "=== $file ===" >> merged.txt
cat "$file" >> merged.txt
echo "" >> merged.txt
done
Python 脚本
简单合并
import glob
import os
def merge_files(pattern, output_file):
with open(output_file, 'w', encoding='utf-8') as outfile:
for filename in glob.glob(pattern):
with open(filename, 'r', encoding='utf-8') as infile:
outfile.write(f"=== {filename} ===\n")
outfile.write(infile.read())
outfile.write("\n\n")
# 使用示例
merge_files("*.txt", "merged_output.txt")
带路径处理的合并
import os
def merge_with_paths(input_dir, output_file, extensions=['.txt', '.md']):
with open(output_file, 'w', encoding='utf-8') as outfile:
for root, dirs, files in os.walk(input_dir):
for file in files:
if any(file.endswith(ext) for ext in extensions):
filepath = os.path.join(root, file)
outfile.write(f"--- {filepath} ---\n")
with open(filepath, 'r', encoding='utf-8') as infile:
outfile.write(infile.read())
outfile.write("\n\n")
# 使用
merge_with_paths("./documents", "merged.txt")
PowerShell(Windows)
# 合并所有文本文件
Get-Content *.txt | Out-File merged.txt
# 带文件名标记
Get-ChildItem *.txt | ForEach-Object {
"=== $($_.Name) ===" | Out-File merged.txt -Append
Get-Content $_.FullName | Out-File merged.txt -Append
"`n" | Out-File merged.txt -Append
}
Node.js 脚本
const fs = require('fs');
const path = require('path');
const glob = require('glob'); // npm install glob
async function mergeFiles(pattern, outputFile) {
const files = glob.sync(pattern);
const writeStream = fs.createWriteStream(outputFile);
for (const file of files) {
writeStream.write(`=== ${file} ===\n`);
const content = fs.readFileSync(file, 'utf-8');
writeStream.write(content);
writeStream.write('\n\n');
}
writeStream.end();
console.log(`Merged ${files.length} files to ${outputFile}`);
}
// 使用
mergeFiles('./**/*.txt', 'merged.txt');
处理特殊格式
合并 JSON 文件
import json
import glob
def merge_json_files(pattern, output_file):
merged_data = {}
for filename in glob.glob(pattern):
with open(filename, 'r') as f:
data = json.load(f)
merged_data[filename] = data
with open(output_file, 'w') as f:
json.dump(merged_data, f, indent=2)
合并 CSV 文件(保留表头)
import pandas as pd
import glob
def merge_csv_files(pattern, output_file):
all_files = glob.glob(pattern)
dfs = []
for file in all_files:
df = pd.read_csv(file)
dfs.append(df)
merged_df = pd.concat(dfs, ignore_index=True)
merged_df.to_csv(output_file, index=False)
使用 find 和 xargs 组合
# Linux/Mac
find . -type f -name "*.txt" -exec echo "--- {} ---" \; -exec cat {} \; > merged.txt
# 或使用 xargs
find . -name "*.txt" -print0 | xargs -0 -I {} sh -c 'echo "=== {} ===" && cat {}' > merged.txt
实用建议
- 处理大文件:使用流式处理避免内存溢出
- 编码问题:注意统一文件编码(UTF-8 最常用)
- 文件排序:需要特定顺序时,先排序再合并
- 错误处理:添加 try-catch 处理无法读取的文件
- 断点续传:处理大量文件时考虑断点功能
选择哪种方法取决于你的操作系统、使用场景和个人熟悉程度。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播