前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【linux命令讲解大全】042.Linux 中必备的 CP 命令详解及实例

【linux命令讲解大全】042.Linux 中必备的 CP 命令详解及实例

作者头像
全栈若城
发布2024-03-02 13:07:33
5870
发布2024-03-02 13:07:33
举报
文章被收录于专栏:若城技术专栏

cp

将源文件或目录复制到目标文件或目录中

补充说明

cp 命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp 命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。

语法
代码语言:javascript
复制
cp [选项] [参数]
选项
  • -a:此参数的效果和同时指定 -dpR 参数相同;
  • -d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
  • -f:强行复制文件或目录,不论目标文件或目录是否已存在;
  • -i:覆盖既有文件之前先询问用户;
  • -l:对源文件建立硬连接,而非复制文件;
  • -p:保留源文件或目录的属性;
  • -R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
  • -s:对源文件建立符号连接,而非复制文件;
  • -u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
  • -S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
  • -b:覆盖已存在的文件目标前将目标文件备份;
  • -v:详细显示命令执行的操作。
参数
  • 源文件:指定源文件列表。默认情况下,cp 命令不能复制目录,如果要复制目录,则必须使用 -R 选项;
  • 目标文件:指定目标文件。当 源文件 为多个文件时,要求 目标文件 为指定的目录。
实例

下面的第一行中是 cp 命令和具体的参数(-r 是“递归”, -u 是“更新”,-v 是“详细”)。接下来的三行显示被复制文件的信息,最后一行显示命令行提示符。这样,只拷贝新的文件到我的存储设备上,我就使用 cp 的“更新”和“详细”选项。

通常来说,参数 -r 也可用更详细的风格 --recursive。但是以简短的方式,也可以这么连用 -ruv

代码语言:javascript
复制
cp -r -u -v /usr/men/tmp ~/men/tmp

版本备份 --backup=numbered 参数意思为“我要做个备份,而且是带编号的连续备份”。所以一个备份就是 1 号,第二个就是 2 号,等等。

代码语言:javascript
复制
$ cp --force --backup=numbered test1.py test1.py
$ ls
test1.py test1.py.~1~ test1.py.~2~

如果把一个文件复制到一个目标文件中,而目标文件已经存在,那么,该目标文件的内容将被破坏。此命令中所有参数既可以是绝对路径名,也可以是相对路径名。通常会用到点.或点点..的形式。例如,下面的命令将指定文件复制到当前目录下:

代码语言:javascript
复制
cp ../mary/homework/assign .

所有目标文件指定的目录必须是已经存在的,cp 命令不能创建目录。如果没有文件复制的权限,则系统会显示出错信息。

将文件 file 复制到目录 /usr/men/tmp 下,并改名为 file1

代码语言:javascript
复制
cp file /usr/men/tmp/file1

将目录 /usr/men 下的所有文件及其子目录复制到目录 /usr/zh 中:

代码语言:javascript
复制
cp -r /usr/men /usr/zh

交互式地将目录 /usr/men 中的以 m 打头的所有 .c 文件复制到目录 /usr/zh 中:

代码语言:javascript
复制
cp -i /usr/men m*.c /usr/zh

在 Linux 下使用 cp 命令复制文件时,有时候会需要覆盖一些同名文件,覆盖文件的时候都会有提示:需要不停的按 Y 来确定执行覆盖。文件数量不多还好,但是要是几百个估计按 Y 都要吐血了,于是折腾来半天总结了一个方法:

代码语言:javascript
复制
cp aaa/* /bbb
# 复制目录 aaa 下所有到 bbb 目录下,这时如果 bbb 目录下有和 aaa 同名的文件,需要按 Y 来确认并且会略过 aaa 目录下的子目录。

cp -r aaa/* /bbb
# 这次依然需要按 Y 来确认操作,但是没有忽略子目录。

cp -r -a aaa/* /bbb
# 依然需要按 Y 来确认操作,并且把 aaa 目录以及子目录和文件属性也传递到了 bbb。

\cp -r -a aaa/* /bbb
# 成功,没有提示按 Y、传递了目录属性、没有略过目录。

递归强制复制目录到指定目录中覆盖已存在文件:

代码语言:javascript
复制
cp -rfb ./* ../backup
# 将当前目录下所有文件,复制到当前目录的兄弟目录 backup 文件夹中

拷贝目录下的隐藏文件如 .babelrc

代码语言:javascript
复制
cp -r aaa/.* ./bbb
# 将 aaa 目录下的,所有`.`开头的文件,复制到 bbb 目录中。

cp -a aaa ./bbb/
# 记住后面目录最好的 `/` 带上 `-a` 参数

复制到当前目录:

代码语言:javascript
复制
cp aaa.conf ./
# 将 aaa.conf 复制到当前目录
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-02-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • cp
    • 补充说明
      • 语法
        • 选项
          • 参数
            • 实例
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档