011、复制文件和目录cp
本文最后更新于 65 天前,其中的信息可能已经过时,如有错误请发送邮件到wuxianglongblog@163.com

复制文件和目录cp

cp[OPTION]... [-T] SOURCE DEST
cp[OPTION]... SOURCE... DIRECTORY
cp[OPTION]... -t DIRECTORY SOURCE...
cp SRC DEST

cp常用选项
-i:覆盖前提示–n:不覆盖,注意两者顺序
-r, -R: 递归复制目录及内部的所有内容
-a: 归档,相当于-dR--preserv=all
-d:--no-dereference --preserv=links 不复制原文件,只复制链接名
--preserv[=ATTR_LIST]
mode: 权限
ownership: 属主属组
timestamp:
links
xattr
context
all
-p: 等同--preserv=mode,ownership,timestamp
-v: --verbose
-f: --force
-u:--update 只复制源比目标更新文件或目标不存在的文件
-b:目标存在,覆盖前先备份(备份整个文件夹)
--backup=numbered 目标存在,覆盖前先备份加数字后缀

说明:
-b 不接受参数,mv会去读取环境变量VERSION_CONTROL来作为备份策略。
--backup该选项指定如果目标文件存在时的动作,共有四种备份策略:
1.CONTROL=none或off : 不备份。
2.CONTROL=numbered或t:数字编号的备份
3.CONTROL=existing或nil:如果存在以数字编号的备份,则继续编号备份m+1...n:
执行mv操作前已存在以数字编号的文件log2.txt.~1~,那么再次执行将产生log2.txt~2~,以次类推。如果之前没有以数字编号的文件,则使用下面讲到的简单备份。
4.CONTROL=simple或never:使用简单备份:在被覆盖前进行了简单备份,简单备份只能有一份,再次被覆盖时,简单备份也会被覆盖。
SRC是文件:
如果目标不存在:新建DEST,并将SRC中内容填充至DEST中
如果目标存在:
#如果DEST是文件:
将SRC中的内容覆盖至DEST中
基于安全,建议为cp命令使用-i选项(默认定义了-i别名,alias cp='cp -i')
#如果DEST是目录:
在DEST下新建与原文件同名的文件,并将SRC中内容填充至新文件中
cp SRC... DEST
SRC...:多个文件
DEST必须存在,且为目录,其它情形均会出错

cp SRC DEST
SRC是目录:此时使用选项:-r
如果DEST不存在:则创建指定目录,复制SRC目录中所有文件至DEST中
如果DEST存在:
如果DEST是文件:报错
如果DEST是目录:

image-20240220182420211

举例:

一、复制一个源文件到目标文件(夹)。
命令格式为:cp 源文件 目标文件(夹)

这个是使用频率最多的命令,负责把一个源文件复制到目标文件(夹)下。复制到文件夹下,则文件名保持不变,复制到文件中,则文件名变更。如果目标文件已经存在或目标文件夹中含有同名文件,则复制之后目标文件或目标文件夹中的同名文件会被覆盖。

[root@localhost ~]# tree
.
├── anaconda-ks.cfg
└── cp
    ├── 1.txt
    ├── 2.txt
    ├── 3.txt
    ├── 4.txt
    └── 5.txt

1 directory, 6 files
[root@localhost ~]# cp anaconda-ks.cfg cp/
[root@localhost ~]# tree
.
├── anaconda-ks.cfg
└── cp
    ├── 1.txt
    ├── 2.txt
    ├── 3.txt
    ├── 4.txt
    ├── 5.txt
    └── anaconda-ks.cfg

1 directory, 7 files
[root@localhost ~]# 
二、同时复制多个文件到目标文件(夹)下。
命令格式为:cp 源文件1 源文件2 目标文件夹 或 cp 文件* 目标文件夹

这个命令使用频率也很高。第一种命令格式可以把列出来的多个文件一次性复制到目标文件夹下,每个文件直接用空格分隔;第二种命令格式使用了通配符*

[root@localhost ~]# tree
.
├── anaconda-ks.cfg
└── cp
    ├── 1.txt
    ├── 2.txt
    ├── 3.txt
    ├── 4.txt
    ├── 5.txt
    └── anaconda-ks.cfg

1 directory, 7 files
[root@localhost ~]# cp cp/* ./
cp: overwrite ‘./anaconda-ks.cfg’? y
[root@localhost ~]# tree
.
├── 1.txt
├── 2.txt
├── 3.txt
├── 4.txt
├── 5.txt
├── anaconda-ks.cfg
└── cp
    ├── 1.txt
    ├── 2.txt
    ├── 3.txt
    ├── 4.txt
    ├── 5.txt
    └── anaconda-ks.cfg

1 directory, 12 files
[root@localhost ~]# 
三、复制源文件夹到目标文件夹下。
命令格式为:cp -r 源文件夹 目标文件夹

这个也是使用频率很高的命令,只需要记住复制文件夹一定要加“-r”参数,否则会出现“cp: omitting directory”错误。

[root@localhost ~]# cp -r /etc/sysconfig/network-scripts/ ./cp
[root@localhost ~]# tree -L 3
.
├── anaconda-ks.cfg
└── cp
    ├── 1.txt
    ├── 2.txt
    ├── 3.txt
    ├── 4.txt
    ├── 5.txt
    ├── anaconda-ks.cfg
    └── network-scripts
        ├── ifcfg-ens33
        ├── ifcfg-lo
        ├── ifdown -> ../../../usr/sbin/ifdown
        ├── ifdown-bnep
        ├── ifdown-eth
        ├── ifdown-ippp
        ├── ifdown-ipv6
        ├── ifdown-isdn -> ifdown-ippp
        ├── ifdown-post
        ├── ifdown-ppp
        ├── ifdown-routes
        ├── ifdown-sit
        ├── ifdown-Team
        ├── ifdown-TeamPort
        ├── ifdown-tunnel
        ├── ifup -> ../../../usr/sbin/ifup
        ├── ifup-aliases
        ├── ifup-bnep
        ├── ifup-eth
        ├── ifup-ippp
        ├── ifup-ipv6
        ├── ifup-isdn -> ifup-ippp
        ├── ifup-plip
        ├── ifup-plusb
        ├── ifup-post
        ├── ifup-ppp
        ├── ifup-routes
        ├── ifup-sit
        ├── ifup-Team
        ├── ifup-TeamPort
        ├── ifup-tunnel
        ├── ifup-wireless
        ├── init.ipv6-global
        ├── network-functions
        └── network-functions-ipv6

2 directories, 42 files
[root@localhost ~]# 
四、只有源文件较目标文件新时复制。
命令格式为:cp -u 源文件 目标文件

这个命令很实用,尤其是在更新文件时。只有源文件比目标文件新时,才会将源文件复制给目标文件,否则,及时执行了命令,也不会执行复制。

五、创建文件的软链接。
命令格式为:cp -s 源文件 目标文件

也可以用ln命令实现同样的功能。当一个文件路径太深(如下述的a/b/c/d/e/orginalFile.txt),访问起来十分不方便时,就会创建这个文件的软链接,使之访问起来更方便些。软链接就相当于windows上的快捷方式。

六、创建文件的硬链接。
命令格式为:cp -l 源文件 目标文件

也可以用ln命令实现同样的功能。有时候,为了某种原因,需要创建一个硬链接

谨此笔记,记录过往。凭君阅览,如能收益,莫大奢望。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇