场景描述
在Linux环境下处理Gutenberg项目中的欧几里得几何文档时,我们经常会遇到这样的文件结构:
me@computer:~/gutenberg/euclid$ ls
book01.html book04.html book07.html
book10.html book13.html book02.html
book05.html book08.html book11.html
book03.html book06.html book09.html
book12.html
核心解决方案
使用cat
命令配合通配符是最简单直接的方法:
cat book{01..13}.html > complete.html
进阶处理技巧
如果需要处理不规则编号的文件,可以先排序再合并:
ls book*.html | sort -V | xargs cat > complete.html
添加HTML文档结构完整性处理:
echo "<!DOCTYPE html><html><head><title>Complete Works</title></head><body>" > complete.html
cat book*.html >> complete.html
echo "</body></html>" >> complete.html
Python脚本方案
对于更复杂的处理需求,可以使用Python脚本:
import glob
files = sorted(glob.glob("book*.html"), key=lambda x: int(x[4:-5]))
with open("complete.html", "w") as outfile:
outfile.write("<html><head><title>Merged Document</title></head><body>\n")
for filename in files:
with open(filename) as infile:
outfile.write(infile.read())
outfile.write("</body></html>")
注意事项
- 确保文件编码一致(建议UTF-8)
- 合并前检查各HTML文件的完整性
- 大文件处理时注意内存使用
- 保留原始文件备份
性能优化
处理超大文件集合时,可以使用find
命令提高效率:
find . -name "book*.html" -print0 | sort -z -V | xargs -0 cat > complete.html