在Linux系统中,将文件内容复制到另一文件可通过多种命令实现,最常用的是cat命令配合重定向符:cat 源文件 > 目标文件会覆盖目标文件内容,cat 源文件 >> 目标文件则追加内容,若需完整复制文件(含权限等元数据),使用cp 源文件 目标文件,dd命令适合精细控制,如dd if=源文件 of=目标文件可按块复制,适合处理二进制文件或特定数据场景,注意操作前确认目标文件路径,避免误覆盖重要数据。
在Linux系统中,将一个文件的内容复制到另一个文件是日常操作中非常常见的需求,比如备份文件内容、合并文件、或修改文件时保留原内容等,本文将详细介绍几种常用的方法,涵盖基础命令和进阶技巧,帮助你高效完成文件内容复制任务。
明确概念:复制文件内容 vs 复制文件本身
在开始操作前,需要先区分两个概念:
- 复制文件内容:仅将源文件的数据写入目标文件,目标文件可以是已存在的(覆盖或追加)或新创建的,不保留源文件的权限、时间戳等元数据。
- 复制文件本身:使用
cp命令复制文件时,默认会复制文件内容及元数据(权限、所有者、修改时间等),相当于创建一个与源文件完全相同的副本。
本文重点讲解复制文件内容的方法,即仅处理数据部分。

常用方法:从基础到进阶
方法1:使用cat命令+重定向符号(最简单直接)
cat命令用于查看文件内容,结合重定向符号>或>>,可实现内容复制。
语法
# 覆盖复制:将源文件内容写入目标文件,目标文件原有内容被替换 cat 源文件 > 目标文件 # 追加复制:将源文件内容追加到目标文件末尾,目标文件原有内容保留 cat 源文件 >> 目标文件
示例
假设当前目录有file1.txt为"Hello Linux")和file2.txt为"Welcome to Linux"),现在将file1.txt复制到file3.txt(新文件):
cat file1.txt > file3.txt
执行后,file3.txt会被创建,内容为"Hello Linux"。
若要将file1.txt追加到file2.txt:
cat file1.txt >> file2.txt
此时file2.txt内容变为"Welcome to LinuxHello Linux"(无换行符时直接拼接,建议在源文件末尾加换行符\n以保持格式)。
方法2:使用cp命令(复制文件内容,需注意选项)
cp命令默认用于复制文件本身(包含元数据),但通过特定选项可实现仅复制内容。
语法
cp --no-preserve=mode,ownership,timestamps 源文件 目标文件
# 简化选项(仅复制内容,忽略所有元数据)
cp --no-preserve=all 源文件 目标文件
示例
将file1.txt复制到file4.txt,且不保留file1.txt的权限、所有者等信息:
cp --no-preserve=all file1.txt file4.txt
此时file4.txt与file1.txt相同,但权限、修改时间等会默认设置为当前用户权限和当前时间。
注意:如果目标文件已存在,cp会直接覆盖其内容(不会提示),需谨慎操作。
方法3:使用dd命令(适合二进制文件或精细控制)
dd命令主要用于数据转换和复制,支持按块(block)读写,适合处理二进制文件(如图片、视频)或需要指定复制大小的场景。
语法
dd if=源文件 of=目标文件
if(input file):输入源文件of(output file):输出目标文件
示例
将file1.txt复制到file5.txt:
dd if=file1.txt of=file5.txt
执行后,file5.txt与file1.txt完全一致。
进阶场景:若只想复制源文件的前100字节到目标文件:
dd if=file1.txt of=file5.txt bs=1 count=100
bs=1:块大小为1字节count=100:复制100个块(即100字节)
方法4:使用echo或printf(适合单行内容或简单文本) 是单行文本,或需要动态生成内容后复制,可以用echo或printf结合重定向。
语法
# echo(单行,末尾默认加换行符) echo "源文件内容" > 目标文件 # printf(可控制格式,如不自动加换行符) printf "%s" "源文件内容" > 目标文件
示例
将字符串"Hello Linux"写入file6.txt:
echo "Hello Linux" > file6.txt
若从源文件读取内容并复制(适合单行):
echo $(cat file1.txt) > file6.txt
注意:echo不适合多行内容,因为会展开变量、保留转义符,可能导致格式错乱;多行内容建议用cat。
方法5:使用文本编辑器(交互式操作,适合小文件)
对于小文件,也可以用文本编辑器(如vim、nano)手动复制粘贴:
- 用
vim file1.txt打开源文件,按yy复制当前行(或`

