cp

cp

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

补充说明

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

语法

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

cp -r -u -v /usr/men/tmp ~/men/tmp

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

$ cp --force --backup=numbered test1.py test1.py
$ ls
test1.py test1.py.~1~ test1.py.~2~

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

cp ../mary/homework/assign .

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

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

cp file /usr/men/tmp/file1

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

cp -r /usr/men /usr/zh

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

cp -i /usr/men m*.c /usr/zh

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

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、传递了目录属性、没有略过目录。

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

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

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

cp -r aaa/.* ./bbb
# 将 aaa 目录下的,所有.开头的文件,复制到 bbb 目录中。

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

复制到当前目录

cp aaa.conf ./
# 将 aaa.conf 复制到当前目录

若文章对你有帮助,可以点赞或打赏支持我们。发布者:Aurora,转载请注明出处:http://61.174.243.28:13541/AY-knowledg-hub/cp/

(0)
AuroraAurora站点维系者
上一篇 2023年 12月 7日 下午7:04
下一篇 2023年 12月 7日 下午7:05

相关推荐

  • HTML 文本格式化

    HTML 文本格式化 加粗文本 斜体文本 电脑自动输出 这是 下标 和 上标 文章目录HTML 格式化标签HTML 文本格式化标签HTML 计算机输出 标签HTML 引文, 引用,…

    2023年 4月 11日
  • Java 流(Stream)、文件(File)和IO

    Java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。 Java.io 包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。 一个…

    2023年 3月 4日
  • 36. 写入文件

    欢迎来到 Golang 系列教程的第 36 篇。 在这一章我们将学习如何使用 Go 语言将数据写到文件里面。并且还要学习如何同步的写到文件里面。 这章教程包括如下几个部分: 将字符…

    2023年 12月 5日
  • 字符串

    文章目录字符串访问字符串中的字节访问字符串中的字符rune使用 for range 遍历字符串通过 byte 切片创建字符串通过 rune 切片创建字符串字符串的长度字符串是不可变…

    2023年 12月 5日
  • ftpcount

    ftpcount 显示目前已FTP登入的用户人数 补充说明 显示目前已ftp登入的用户人数。执行这项指令可得知目前用FTP登入系统的人数以及FTP登入人数的上限。 语法: ftpc…

    入门教程 2023年 12月 14日
  • emacs

    文章目录emacs补充说明语法选项参数emacs命令操作大全 emacs 功能强大的全屏文本编辑器 补充说明 emacs命令 是由GNU组织的创始人Richard Stallman…

    入门教程 2023年 12月 14日
  • IOS 故事板(Storyboards)

    简介 Storyboards在 iOS 5 中才有介绍,当我们用Storyboards时,部署目标应该是iOS5.0或更高版本。 Storyboards 帮助我们了解视觉流动的画面…

    2023年 4月 1日
  • 前言

    C++ 是一种高级语言,它是由 Bjarne Stroustrup 于 1979 年在贝尔实验室开始设计开发的。C++ 进一步扩充和完善了 C 语言,是一种面向对象的程序设计语言。…

    2024年 3月 18日
  • nethogs

    文章目录nethogs补充说明语法选项安装NetHogs用法NetHogs 命令行参数 nethogs 终端下的网络流量监控工具 补充说明 有很多适用于Linux系统的开源网络监视…

    入门教程 2024年 1月 10日
  • write

    文章目录write补充说明语法参数实例 write 向指定登录用户终端上发送信息 补充说明 write命令 用于向指定登录用户终端上发送信息。通过write命令可传递信息给另一位登…

    入门教程 2024年 1月 3日
Translate »