基础方法:使用cat
命令
cat
(concatenate)是Linux中最直接的文件合并工具,支持将多个文件内容输出到指定文件或终端。
基本语法
cat file1.txt file2.txt file3.txt > combined.txt
- 功能:将
file1.txt
、file2.txt
、file3.txt
按顺序合并到combined.txt
。 - 注意:若目标文件已存在,其内容会被覆盖。
配合通配符批量合并
cat .txt > all_texts.txt
- 适用场景:快速合并当前目录下所有
.txt
文件。 - 扩展:
cat .log(.)?
:匹配类似error.log
、access.log.1
的文件。cat file?.txt
:合并file1.txt
、file2.txt
等。
保留文件属性(高级用法)
若需保留原文件的权限、所有者或修改时间,可结合tar
或cpio
:
tar -cvf combined.tar file1.txt file2.txt # 打包并保留属性
- 缺点:生成的是压缩包,需解压后查看内容。
进阶技巧:按需处理合并内容
去除重复行
cat file1.txt file2.txt | sort -u > deduped.txt
- 功能:合并后排序并去重,适用于日志或数据清洗。
添加分隔符
echo "=== File 1 ===" >> combined.txt cat file1.txt >> combined.txt echo "=== File 2 ===" >> combined.txt cat file2.txt >> combined.txt
- 替代方案:使用
paste
命令横向合并字段(非文件):paste file1.txt file2.txt > merged_fields.txt
- 适用场景:对比多个文件的差异。
过滤特定内容
cat .txt | grep -v "^#" > filtered.txt # 去除以#开头的注释行
- 扩展:结合
sed
删除空白行:cat .txt | sed '/^$/d' > no_blank.txt
工具对比与选择
工具 | 适用场景 | 优点 | 缺点 |
---|---|---|---|
cat |
简单合并 | 速度快,语法简洁 | 无法处理复杂逻辑(如去重、排序) |
awk |
合并并处理内容 | 灵活筛选、格式化 | 学习成本较高 |
paste |
横向合并字段 | 保留字段间隔,适合对比 | 仅支持列合并,不适用多文件整合 |
tar/cpio |
保留文件属性 | 保留权限、时间戳 | 生成压缩包,需解压使用 |
find + xargs |
递归批量合并子目录文件 | 支持深度遍历 | 命令较长,需注意路径长度限制 |
批量操作实战
合并指定目录下的所有.md
文件
cat /path/to/dir//.md > all_notes.md
- 说明:递归查找子目录中的
.md
文件。
按文件创建时间排序后合并
ls -t .txt | xargs cat > sorted_combined.txt
- 功能:按修改时间倒序排列文件,再合并。
合并时自动备份原文件
cp .txt backup_dir/ # 备份所有文件 cat .txt > combined.txt
注意事项
- 文件名含空格:使用引号或转义:
cat "file with space.txt" >> combined.txt
- 覆盖警告:若不想覆盖目标文件,可追加内容:
cat file.txt >> existing.txt
- 大文件性能:
cat
处理大文件时可能效率较低,建议分批合并:cat file1.txt file2.txt > temp.txt && mv temp.txt combined.txt
FAQs
Q1:如何合并文本文件并去除所有空白行?
cat .txt | sed '/^$/d' > cleaned.txt
- 解析:
sed '/^$/d'
表示删除空行。
Q2:合并后如何验证文件完整性?
md5sum combined.txt # 生成MD5哈希值 md5sum file1.txt file2.txt | cut -d ' ' -f 1 | sort | uniq # 对比源文件哈希
- 说明:通过哈希值检查合并后文件是否与原始
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/73761.html