当前位置:首页 > Linux > 正文

linux 如何批量合并文本

在Linux中可使用 cat命令批量合并文本,格式为 cat 文件1 文件2 > 新文件,也可配合通配符(如 cat .txt > merged.txt)快速合并

基础方法:使用cat命令

cat(concatenate)是Linux中最直接的文件合并工具,支持将多个文件内容输出到指定文件或终端。

linux 如何批量合并文本  第1张

基本语法

cat file1.txt file2.txt file3.txt > combined.txt
  • 功能:将file1.txtfile2.txtfile3.txt按顺序合并到combined.txt
  • 注意:若目标文件已存在,其内容会被覆盖。

配合通配符批量合并

cat .txt > all_texts.txt
  • 适用场景:快速合并当前目录下所有.txt文件。
  • 扩展
    • cat .log(.)?:匹配类似error.logaccess.log.1的文件。
    • cat file?.txt:合并file1.txtfile2.txt等。

保留文件属性(高级用法)

若需保留原文件的权限、所有者或修改时间,可结合tarcpio

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

注意事项

  1. 文件名含空格:使用引号或转义:
    cat "file with space.txt" >> combined.txt
  2. 覆盖警告:若不想覆盖目标文件,可追加内容:
    cat file.txt >> existing.txt
  3. 大文件性能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  # 对比源文件哈希
  • 说明:通过哈希值检查合并后文件是否与原始
0