导读:熟悉在 Linux 命令行中复制文件和目录的 cp 命令。
本文字数:2116,阅读时长大约: 3分钟
熟悉在 Linux 命令行中复制文件和目录的 cp 命令。
cp命令是 Linux 中一个重要的命令,你可能经常会用到它。
正如名称所示,cp代表 复制(copy),它被用于 itsfoss.com。
这是一个相对简单的命令,只有几个选项,但你仍有必要深入了解它。
在展示cp命令的实际示例之前,我更建议你先熟悉绝对路径和相对路径的概念,将文件从一个位置复制到另一个位置时,你需要用到它们。
linuxhandbook.com
复制单个文件
cp命令最简单和最常见的用途是复制文件,只需指定源文件和要“粘贴”文件的目标目录即可。
cp 源文件 目标目录
将单个文件从源目录复制到目标目录。
在复制文件的同时重命名它
你将文件复制到另一个位置时可以同时进行 learnubuntu.com:443。这有点类似于文本编辑器中的“另存为”选项。
为此,你必须在路径中给出新的文件名。
cp 源文件 目标目录/新文件名
在复制文件的同时重命名
复制多个文件
你还可以将多个文件复制到另一个位置。
cp 文件1 文件2 文件3 目标目录
复制多个文件时,将目标目录放在最后
在这种情况下,你无法重命名文件。
你还可以使用通配符扩展,将特定后缀的文件复制到另一个位置:
cp *.txt 目标目录
使用通配符扩展复制多个文件,比如所有 .txt 后缀的文件
复制文件时避免覆盖现有文件
如果你将file1.txt复制到一个已经存在名为file1.txt文件的目录中,它会将原有的文件覆盖掉。
如果你不希望这样,cp命令还提供了几个选项来处理文件覆盖的情况。
首先是使用选项-i的交互模式。在交互模式下,它会询问是否确认或放弃覆盖目标文件。
cp -i 源文件 目标目录cp:覆盖 '目标目录/源文件' ?
按Y覆盖文件,按N跳过复制该文件。
覆盖,但以交互方式询问(内容将被覆盖)
覆盖,但以交互方式询问(内容不会被覆盖)
选项-n代表完全取消覆盖。使用此选项时目标文件不会被覆盖。
cp -n 源文件 目标目录
取消覆盖(目录内文件的内容未更改)
还有一个选项-b,在目标目录的文件将被覆盖时自动为其创建备份。我猜这里b代表 备份(backup)。
cp -b 源文件 目标目录
覆盖文件,但在备份文件后附加了“~”。
最后,还有一个“更新(update)”选项-u,如果目标文件比源文件旧,或者目标文件不存在,就会被覆盖掉。
cp -u 源文件 目标目录
新文件会覆盖旧文件
复制目录(文件夹)
cp 命令也用来 linuxhandbook.com:443。
在复制目录时,你需要使用递归选项-r。
cp -r 源目录 目标目录
在 Linux 中使用 cp 命令复制整个目录
你还可以将多个目录复制到另一个位置:
cp -r 目录1 目录2 目录3 目标目录
使用 cp 命令复制多个目录
在复制时保留属性
当你将文件复制到另一个位置时,它的 linuxhandbook.com:443、 linuxhandbook.com:443 甚至所有权都会发生变化。
这是正常的行为。但在某些情况下,你可能希望在复制文件时保留其原始属性。
要保留属性,请使用选项-p:
cp -p 源文件 目标目录
还有一个 -a 选项用于存档模式。它将连 ACL 也保留下来。
️ 练习时间
想要练习一下cp命令吗?以下是一些简单的练习题供你尝试。
◈ 打开终端并创建一个名为practice_cp的目录。
◈ 现在,将/etc/services文件复制到这个新创建的目录中。
◈ 在practice目录中对复制的services文件进行一些小的更改。
◈ 现在,使用更新模式再次复制/etc/services文件。有什么变化吗?观察一下。
◈ 查看/var/log目录,并将以mail开头的日志文件复制到你的联系目录下。
◈ 现在,返回到你的家目录,并创建一个名为new_dir的新目录(好吧,我想不出更好的名字)。
◈ 将practice_cp目录复制到new_dir目录中。
对你来说这些练习足够用了。希望你能喜欢在这里学习 Linux 命令。
(题图:MJ/07b35a39-826e-4904-9f85-25257831ce9d)
via:
作者: 选题: 译者: 校对:
本文由 原创编译, 荣誉推出
LCTT 译者 :onionstalgia
翻译: 6.0 篇
贡献: 196 天
2023-01-26
2023-08-09
https://linux.cn/lctt/onionstalgia
欢迎遵照 CC-BY-SA 协议规定转载,
如需转载,请在文章下留言 “ 转载:公众号名称”,
我们将为您添加白名单,授权“ 转载文章时可以修改”。
热门跟贴